/// <reference path="../../includes.ts"/>
/// <reference path="configPlugin.ts"/>
module Configs{

	export interface Block{
		ip:string; //存储块的机器ip地址
		path: string; //路径
	}

	export interface oracleParam{
		name: string
		ip: string;
		port: string;
		serviceName: string;
		tableName: string;
		status: string;	
		id?:number;	
	}

	export interface volume{
		name: string; //volume的名字
		totalSize: number; //volume空间大小
		usedSize: number; // volume已使用空间大小
		block: Block; //volume中的存储块
		folder?: Array<any>;	//volume的文件	
	}	

    //字节大小转换成字符大小
	function getStringSize(size: number){
		var result = size; 
		var suffix =["B", "KB" ,"MB", "GB", "GB", "TB"];
		var count=1; 
		while(result > 1024){
			result = result/1024;
			count ++;			
		}
		return result + suffix[count];
	}


	export class ConfigsModelService{
		public cluster: Array<volume>=[];
		public oracleParam: Array<oracleParam>=[];

		public constructor(){
			this.updateAllData();		
		}

		public updateAllData(){
			this.updateVolumeData();
			this.updateOracleParam();
		}
	    public updateVolumeData(){
	    	var result=null;
	    	$.ajax({ 
				async: false, 
				type : "POST", 
				url : "/java/console/api/volume/list",					
				success : function(data) { 
				    if(data){			
					    result = data;
					}
					console.log(data);								
				} 
			});			
			this.cluster = result;
	    	
		}

		public updateOracleParam(){
			var result=null;
			$.ajax({
				async: false,
				type : "POST",
				url : "/java/console/api/oracle/list",
				success : function(data) { 
				    if(data){			
					    result = data;					   
					}								
				} 	
			});			
			this.oracleParam = result;			
		}

		public getFolderByVolumeName(name: string){
			if(this.cluster===null)
				return null;
			for(var  i=0; i< this.cluster.length; i++){
				if(this.cluster[i].name === name)
					return this.cluster[i].folder;
			}
		}
	}

    _module.factory('ConfigsModel', ['$rootScope', '$http', '$location', '$resource', ($rootScope, $http, $location, $resource) =>{    	
    	var $scope = new ConfigsModelService();
    	return $scope;
    }]);
}