You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
3.8 KiB
161 lines
3.8 KiB
/// <reference path="../../includes.ts"/>
|
|
/// <reference path="configPlugin.ts"/>
|
|
module Configs{
|
|
|
|
export interface Block{
|
|
ip:string; //存储块的机器ip地址
|
|
path: string; //存储块路径
|
|
status: boolean; //存储块的状态
|
|
availableSize?: number, //存储块的大小
|
|
usedSize?: number //存储块已使用空间
|
|
}
|
|
|
|
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<Block>; //volume中的存储块
|
|
folder?: Array<any>; //volume的文件
|
|
status: string;
|
|
path: string;
|
|
}
|
|
|
|
//字节大小转换成字符大小
|
|
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);
|
|
angular.forEach(volume.brick, (brock) =>{
|
|
brock["formatUsedSize"] = getStringSize(brock.usedSize);
|
|
brock["formatAllSize"] = getStringSize(brock.availableSize);
|
|
})
|
|
}
|
|
|
|
function formatVolumes(volumes:Array<volume>){
|
|
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<volume>=[];
|
|
public oracleParam: Array<oracleParam>=[];
|
|
public systemInfo: Array<any> =[];
|
|
public regionalismInfo: Array<any> = [];
|
|
|
|
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 = 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;
|
|
}]);
|
|
} |