mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Root Cause: The API returns the percentage value as floating point number but In UI it is converted to floor value of that number. Hence for values less than 1%, the value is being converted to 0% and it doesn't show the value in the UI. Solution: Removed the conversion, now it represents as it is(Floating point value).
292 lines
13 KiB
JavaScript
292 lines
13 KiB
JavaScript
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
(function($, cloudStack) {
|
|
// Admin dashboard
|
|
cloudStack.sections.dashboard = {
|
|
title: 'label.menu.dashboard',
|
|
show: cloudStack.uiCustom.dashboard,
|
|
|
|
adminCheck: function(args) {
|
|
return isAdmin() ? true : false;
|
|
},
|
|
|
|
// User dashboard
|
|
user: {
|
|
dataProvider: function(args) {
|
|
var dataFns = {
|
|
instances: function(data) {
|
|
var totalInstanceCount = 0;
|
|
$.ajax({
|
|
url: createURL("listVirtualMachines"),
|
|
data: {
|
|
listAll: true,
|
|
page: 1,
|
|
pageSize: 1
|
|
},
|
|
async: false,
|
|
success: function(json) {
|
|
if (json.listvirtualmachinesresponse.count != undefined) {
|
|
totalInstanceCount = json.listvirtualmachinesresponse.count;
|
|
}
|
|
}
|
|
});
|
|
|
|
var RunningInstanceCount = 0;
|
|
$.ajax({
|
|
url: createURL("listVirtualMachines"),
|
|
data: {
|
|
listAll: true,
|
|
page: 1,
|
|
pageSize: 1,
|
|
state: "Running"
|
|
},
|
|
async: false,
|
|
success: function(json) {
|
|
if (json.listvirtualmachinesresponse.count != undefined) {
|
|
RunningInstanceCount = json.listvirtualmachinesresponse.count;
|
|
}
|
|
}
|
|
});
|
|
|
|
var stoppedInstanceCount = 0;
|
|
$.ajax({
|
|
url: createURL("listVirtualMachines"),
|
|
data: {
|
|
listAll: true,
|
|
page: 1,
|
|
pageSize: 1,
|
|
state: "Stopped"
|
|
},
|
|
async: false,
|
|
success: function(json) {
|
|
if (json.listvirtualmachinesresponse.count != undefined) {
|
|
stoppedInstanceCount = json.listvirtualmachinesresponse.count;
|
|
}
|
|
}
|
|
});
|
|
|
|
dataFns.account($.extend(data, {
|
|
runningInstances: RunningInstanceCount,
|
|
stoppedInstances: stoppedInstanceCount,
|
|
totalInstances: totalInstanceCount
|
|
}));
|
|
},
|
|
|
|
account: function(data) {
|
|
var user = cloudStack.context.users[0];
|
|
dataFns.events($.extend(data, {
|
|
accountID: user.userid,
|
|
accountName: user.account,
|
|
userName: user.username,
|
|
accountType: user.role,
|
|
accountDomainID: user.domainid
|
|
}));
|
|
},
|
|
|
|
events: function(data) {
|
|
$.ajax({
|
|
url: createURL('listEvents'),
|
|
data: {
|
|
listAll: true,
|
|
page: 1,
|
|
pageSize: (pageSize > 4? 4: pageSize) //if default.page.size > 4, show 4 items only (since space on dashboard is limited)
|
|
//pageSize: 1 //for testing only
|
|
},
|
|
success: function(json) {
|
|
dataFns.ipAddresses($.extend(data, {
|
|
events: json.listeventsresponse.event ? json.listeventsresponse.event : []
|
|
}));
|
|
}
|
|
});
|
|
},
|
|
|
|
ipAddresses: function(data) {
|
|
$.ajax({
|
|
url: createURL('listNetworks'),
|
|
data: {
|
|
listAll: true,
|
|
page: 1,
|
|
pageSize: 1,
|
|
type: 'isolated',
|
|
supportedServices: 'SourceNat'
|
|
},
|
|
success: function(json) {
|
|
var netTotal = json.listnetworksresponse.count ?
|
|
json.listnetworksresponse.count : 0;
|
|
|
|
$.ajax({
|
|
url: createURL('listPublicIpAddresses'),
|
|
data: {
|
|
page: 1,
|
|
pageSize: 1
|
|
},
|
|
success: function(json) {
|
|
var ipTotal = json.listpublicipaddressesresponse.count ?
|
|
json.listpublicipaddressesresponse.count : 0;
|
|
|
|
complete($.extend(data, {
|
|
netTotal: netTotal,
|
|
ipTotal: ipTotal
|
|
}));
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
var complete = function(data) {
|
|
args.response.success({
|
|
data: data
|
|
});
|
|
};
|
|
|
|
dataFns.instances({});
|
|
}
|
|
},
|
|
|
|
// Admin dashboard
|
|
admin: {
|
|
zoneDetailView: {
|
|
tabs: {
|
|
resources: {
|
|
title: 'label.resources',
|
|
custom: cloudStack.uiCustom.systemChart('resources')
|
|
}
|
|
}
|
|
},
|
|
|
|
dataProvider: function(args) {
|
|
var dataFns = {
|
|
zones: function(data) {
|
|
$.ajax({
|
|
url: createURL('listZones'),
|
|
success: function(json) {
|
|
dataFns.capacity({
|
|
zones: json.listzonesresponse.zone
|
|
});
|
|
}
|
|
});
|
|
},
|
|
capacity: function(data) {
|
|
if (window.fetchLatestflag == 1) {
|
|
data.fetchLatest = true;
|
|
} else {
|
|
data.fetchLatest = false;
|
|
}
|
|
window.fetchLatestflag = 0;
|
|
dataFns.alerts(data);
|
|
},
|
|
|
|
alerts: function(data) {
|
|
$.ajax({
|
|
url: createURL('listAlerts'),
|
|
data: {
|
|
page: 1,
|
|
pageSize: (pageSize > 4? 4: pageSize) //if default.page.size > 4, show 4 items only (since space on dashboard is limited)
|
|
},
|
|
success: function(json) {
|
|
var alerts = json.listalertsresponse.alert ?
|
|
json.listalertsresponse.alert : [];
|
|
|
|
dataFns.hostAlerts($.extend(data, {
|
|
alerts: $.map(alerts, function(alert) {
|
|
return {
|
|
name: cloudStack.converters.toAlertType(alert.type),
|
|
description: alert.description,
|
|
sent: cloudStack.converters.toLocalDate(alert.sent)
|
|
};
|
|
})
|
|
}));
|
|
}
|
|
});
|
|
},
|
|
|
|
hostAlerts: function(data) {
|
|
$.ajax({
|
|
url: createURL('listHosts'),
|
|
data: {
|
|
state: 'Alert',
|
|
page: 1,
|
|
pageSize: (pageSize > 4? 4: pageSize) //if default.page.size > 4, show 4 items only (since space on dashboard is limited)
|
|
},
|
|
success: function(json) {
|
|
var hosts = json.listhostsresponse.host ?
|
|
json.listhostsresponse.host : [];
|
|
|
|
dataFns.zoneCapacity($.extend(data, {
|
|
hostAlerts: $.map(hosts, function(host) {
|
|
return {
|
|
name: host.name,
|
|
description: 'message.alert.state.detected'
|
|
};
|
|
})
|
|
}));
|
|
}
|
|
});
|
|
},
|
|
|
|
zoneCapacity: function(data) {
|
|
$.ajax({
|
|
url: createURL('listCapacity'),
|
|
data: {
|
|
fetchLatest: data.fetchLatest,
|
|
sortBy: 'usage',
|
|
},
|
|
success: function(json) {
|
|
var capacities = json.listcapacityresponse.capacity ?
|
|
json.listcapacityresponse.capacity : [];
|
|
|
|
complete($.extend(data, {
|
|
zoneCapacities: $.map(capacities, function(capacity) {
|
|
if (capacity.podname) {
|
|
capacity.zonename = capacity.zonename.concat(', ' + _l('label.pod') + ': ' + capacity.podname);
|
|
}
|
|
|
|
if (capacity.clustername) {
|
|
capacity.zonename = capacity.zonename.concat(', ' + _l('label.cluster') + ': ' + capacity.clustername);
|
|
}
|
|
|
|
capacity.zonename.replace('Zone:', _l('label.zone') + ':');
|
|
|
|
return {
|
|
zoneID: capacity.zoneid, // Temporary fix for dashboard
|
|
zoneName: capacity.zonename,
|
|
type: cloudStack.converters.toCapacityCountType(capacity.type),
|
|
percent: capacity.percentused,
|
|
used: cloudStack.converters.convertByType(capacity.type, capacity.capacityused),
|
|
total: cloudStack.converters.convertByType(capacity.type, capacity.capacitytotal)
|
|
};
|
|
})
|
|
}));
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
var complete = function(data) {
|
|
args.response.success({
|
|
data: data
|
|
});
|
|
};
|
|
|
|
dataFns.zones({});
|
|
}
|
|
}
|
|
};
|
|
})(jQuery, cloudStack);
|