///
///
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;
}]);
}