misc_pterodactyl-panel/public/themes/pterodactyl/js/admin/statistics.js

118 lines
No EOL
3 KiB
JavaScript

var freeDisk = Pterodactyl.totalNodeDisk - Pterodactyl.totalServerDisk;
let diskChart = new Chart($('#disk_chart'), {
type: 'pie',
data: {
labels: ['Free Disk', 'Used Disk'],
datasets: [
{
label: 'Disk (in MB)',
backgroundColor: ['#51B060', '#ff0000'],
data: [freeDisk, Pterodactyl.totalServerDisk]
}
]
}
});
var freeRam = Pterodactyl.totalNodeRam - Pterodactyl.totalServerRam;
let ramChart = new Chart($('#ram_chart'), {
type: 'pie',
data: {
labels: ['Free RAM', 'Used RAM'],
datasets: [
{
label: 'Memory (in MB)',
backgroundColor: ['#51B060', '#ff0000'],
data: [freeRam, Pterodactyl.totalServerRam]
}
]
}
});
var activeServers = Pterodactyl.servers.length - Pterodactyl.suspendedServers;
let serversChart = new Chart($('#servers_chart'), {
type: 'pie',
data: {
labels: ['Active', 'Suspended'],
datasets: [
{
label: 'Servers',
backgroundColor: ['#51B060', '#E08E0B'],
data: [activeServers, Pterodactyl.suspendedServers]
}
]
}
});
let statusChart = new Chart($('#status_chart'), {
type: 'pie',
data: {
labels: ['Online', 'Offline', 'Installing', 'Error'],
datasets: [
{
label: '',
backgroundColor: ['#51B060', '#b7b7b7', '#E08E0B', '#ff0000'],
data: [0,0,0,0]
}
]
}
});
var servers = Pterodactyl.servers;
var nodes = Pterodactyl.nodes;
for (let i = 0; i < servers.length; i++) {
setTimeout(getStatus, 200 * i, servers[i]);
}
function getStatus(server) {
var uuid = server.uuid;
var node = getNodeByID(server.node_id);
$.ajax({
type: 'GET',
url: node.scheme + '://' + node.fqdn + ':'+node.daemonListen+'/v1/server',
timeout: 5000,
headers: {
'X-Access-Server': uuid,
'X-Access-Token': Pterodactyl.tokens[node.id],
}
}).done(function (data) {
if (typeof data.status === 'undefined') {
// Error
statusChart.data.datasets[0].data[3]++;
return;
}
switch (data.status) {
case 0:
case 3:
case 30:
// Offline
statusChart.data.datasets[0].data[1]++;
break;
case 1:
case 2:
// Online
statusChart.data.datasets[0].data[0]++;
break;
case 20:
// Installing
statusChart.data.datasets[0].data[2]++;
break;
}
statusChart.update();
}).fail(function (jqXHR) {
// Error
statusChart.data.datasets[0].data[3]++;
statusChart.update();
});
}
function getNodeByID(id) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].id === id) {
return nodes[i];
}
}
}