/// /// module Configs{ export interface Block{ ip:string; //存储块的机器ip地址 path: string; //存储块路径 status: boolean; //存储块的状态 availableSize?: number, //存储块的大小 usedSize?: number //存储块已使用空间 editable?: boolean } export interface oracleParam{ name: string ip: string; port: string; serviceName: string; tableName: string; status: string; id?:number; } export interface volume{ name: string; //volume的名字 allSize: number; //volume空间大小 usedSize: number; // volume已使用空间大小 brick: Array; //volume中的存储块 folder?: Array; //volume的文件 status: boolean; path: string; editable?: boolean } //字节大小转换成字符大小 function getStringSize(size: number){ var result = size; var suffix =["B", "KB" ,"MB", "GB", "TB", "PB"]; var count=1; while(result >= 1024){ result = result/1024; count ++; } return result.toFixed(2) + suffix[count]; } function formatVolume(volume:volume){ volume["formatTotalSize"] = getStringSize(volume.allSize); volume["formatUsedSize"] = getStringSize(volume.usedSize); volume["editable"] = false; angular.forEach(volume.brick, (brock) =>{ brock["formatUsedSize"] = getStringSize(brock.usedSize); brock["formatAllSize"] = getStringSize(brock.availableSize); brock["editable"] = false; }) } export function formatVolumes(volumes:Array){ angular.forEach(volumes, (volume) => { formatVolume(volume); }) } function IsBrockEquals(brock1: Block, brock2: Block){ return brock1.ip == brock2.ip && brock1.path == brock2.path; } /** 刪除volume中指定的brock */ export function deleteBrock(volume:volume, brock:Block){ for(var i = 0; i < volume.brick.length; i++){ var brick = volume.brick[i]; if(IsBrockEquals(brick, brock)){ volume.brick.splice(i, 1); break; } } } /** volume添加brock */ export function addBrock(volume:volume, brock:Block){ if(brock != null && brock != undefined) volume.brick.push(brock); } export class ConfigsModelService{ public cluster: Array=[]; public oracleParam: Array=[]; public systemInfo: Array =[]; public regionalismInfo: Array = []; public constructor(){ this.updateAllData(); } public updateAllData(){ this.updateVolumeData(); this.updateOracleParam(); //this.updateCodeInfo(); } public updateVolumeData(){ var result=null; $.ajax({ async: false, type : "POST", url : "/java/console/api/volume/list", success : function(data) { if(data){ result = data; } } }); this.cluster =JSON.parse(result); formatVolumes(this.cluster); } /*public updateCodeInfo(){ var result=null; $.ajax({ async: false, type : "POST", url : "/java/console/api/code/list", success : function(data) { if(data){ result = data; } } }); this.regionalismInfo = result.regionalism; this.systemInfo = result.system; }*/ 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; }]); }