update graphs and add new tier
This commit is contained in:
61
res/include/script/user_home.js
Normal file
61
res/include/script/user_home.js
Normal file
@@ -0,0 +1,61 @@
|
||||
function loadGraph(graph, stat, minutes, interval){
|
||||
let today = new Date()
|
||||
let start = new Date()
|
||||
start.setMinutes(start.getMinutes()-minutes)
|
||||
|
||||
fetch(
|
||||
apiEndpoint+"/user/time_series/" + stat +
|
||||
"?start="+start.toISOString() +
|
||||
"&end="+today.toISOString() +
|
||||
"&interval="+interval
|
||||
).then(resp => {
|
||||
if (!resp.ok) { return Promise.reject("Error: "+resp.status);}
|
||||
return resp.json();
|
||||
}).then(resp => {
|
||||
resp.timestamps.forEach((val, idx) => {
|
||||
let date = new Date(val);
|
||||
let dateStr = ("00"+(date.getMonth()+1)).slice(-2);
|
||||
dateStr += "-"+("00"+date.getDate()).slice(-2);
|
||||
dateStr += " "+("00"+date.getHours()).slice(-2);
|
||||
dateStr += ":"+("00"+date.getMinutes()).slice(-2);
|
||||
resp.timestamps[idx] = " "+dateStr+" "; // Poor man's padding
|
||||
});
|
||||
graph.data.labels = resp.timestamps;
|
||||
graph.data.datasets[0].data = resp.amounts;
|
||||
graph.update();
|
||||
|
||||
document.getElementById("time_start").innerText = resp.timestamps[0];
|
||||
document.getElementById("time_end").innerText = resp.timestamps.slice(-1)[0];
|
||||
let total = 0
|
||||
resp.amounts.forEach(e => { total += e; });
|
||||
|
||||
if (stat == "views") {
|
||||
document.getElementById("total_views").innerText = formatThousands(total);
|
||||
} else if (stat == "downloads") {
|
||||
document.getElementById("total_downloads").innerText = formatThousands(total);
|
||||
} else if (stat == "bandwidth") {
|
||||
document.getElementById("total_bandwidth").innerText = formatDataVolume(total, 3);
|
||||
}
|
||||
}).catch(e => {
|
||||
console.error("Error requesting time series: "+e);
|
||||
})
|
||||
}
|
||||
|
||||
let graphViews = drawGraph(document.getElementById("views_chart"), "Views", "number");
|
||||
let graphDownloads = drawGraph(document.getElementById("downloads_chart"), "Downloads", "number");
|
||||
let graphBandwidth = drawGraph(document.getElementById("bandwidth_chart"), "Bandwidth", "bytes");
|
||||
let graphTimeout = null;
|
||||
|
||||
function updateGraphs(minutes, interval, live) {
|
||||
if (graphTimeout !== null) { clearTimeout(graphTimeout) }
|
||||
if (live) {
|
||||
graphTimeout = setTimeout(() => {updateGraphs(minutes, interval, true)}, 10000)
|
||||
}
|
||||
|
||||
loadGraph(graphViews, "views", minutes, interval);
|
||||
loadGraph(graphDownloads, "downloads", minutes, interval);
|
||||
loadGraph(graphBandwidth, "bandwidth", minutes, interval);
|
||||
}
|
||||
|
||||
// Default
|
||||
updateGraphs(10080, 60, false);
|
Reference in New Issue
Block a user