90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
/*
|
|
* Obtiene los datos de la cuota de cgi-bin/limitator.json y los muestra.
|
|
*/
|
|
|
|
getCounters(parseCounters);
|
|
setInterval(() => getCounters(parseCounters), 5000);
|
|
|
|
var ctx = document.getElementById('speed_chart');
|
|
var chart = new Chart(ctx, {
|
|
type: 'line',
|
|
data: {
|
|
labels: ['', '', '', '', '', '', '', '', '', ''],
|
|
datasets: [{
|
|
label: 'Velocidad (KB/s)',
|
|
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: false,
|
|
elements: {
|
|
point: {
|
|
radius: 0
|
|
}
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
ticks: {
|
|
display: false
|
|
}
|
|
}],
|
|
yAxes: [{
|
|
ticks: {
|
|
min: 0
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
});
|
|
|
|
function getCounters(funcToParse) {
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function () {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
funcToParse(this.responseText);
|
|
}
|
|
};
|
|
xhttp.open("GET", "cgi-bin/limitator.json", true);
|
|
xhttp.send();
|
|
}
|
|
|
|
function parseCounters(data) {
|
|
let counters = JSON.parse(data);
|
|
document.getElementById("remaining").innerHTML = bytesToGigas(counters.remaining);
|
|
document.getElementById("used_bytes").innerHTML = bytesToGigas(counters.used_bytes);
|
|
document.getElementById("current_quota").innerHTML = bytesToGigas(counters.current_quota);
|
|
document.getElementById("total_quota").innerHTML = bytesToGigas(counters.total_quota);
|
|
|
|
updateSpeed(counters.used_bytes);
|
|
}
|
|
|
|
var used_bytes_array = new Array();
|
|
function updateSpeed(used_bytes) {
|
|
used_bytes_array.push({ used_bytes: used_bytes, date: new Date() });
|
|
|
|
if (used_bytes_array.length <= 1)
|
|
return;
|
|
else if (used_bytes_array.length > 10)
|
|
used_bytes_array.shift();
|
|
|
|
let previous_used_bytes = used_bytes_array[used_bytes_array.length - 2];
|
|
let byte_transferred = used_bytes - previous_used_bytes.used_bytes;
|
|
let time_elapsed = (new Date() - previous_used_bytes.date) / 1000;
|
|
document.getElementById("speed").innerHTML = bytesToKbps(byte_transferred / time_elapsed);
|
|
|
|
chart.data.datasets[0].data.shift();
|
|
chart.data.datasets[0].data.push(byte_transferred / time_elapsed / 1024);
|
|
chart.update();
|
|
}
|
|
|
|
function bytesToGigas(number) {
|
|
return (number / 1024 / 1024 / 1024).toFixed(1) + ' GB';
|
|
}
|
|
|
|
function bytesToMegas(number) {
|
|
return (number / 1024 / 1024).toFixed(1) + ' MB';
|
|
}
|
|
|
|
function bytesToKbps(number) {
|
|
return (number / 1024).toFixed(1) + ' KB/s';
|
|
} |