diff --git a/res/include/script/user_home.js b/res/include/script/user_home.js index e986b8a..5f91752 100644 --- a/res/include/script/user_home.js +++ b/res/include/script/user_home.js @@ -1,24 +1,24 @@ -function loadGraph(graph, stat, minutes, interval){ +function loadGraph(graph, stat, minutes, interval) { let today = new Date() let start = new Date() - start.setMinutes(start.getMinutes()-minutes) + start.setMinutes(start.getMinutes() - minutes) fetch( - apiEndpoint+"/user/time_series/" + stat + - "?start="+start.toISOString() + - "&end="+today.toISOString() + - "&interval="+interval + apiEndpoint + "/user/time_series/" + stat + + "?start=" + start.toISOString() + + "&end=" + today.toISOString() + + "&interval=" + interval ).then(resp => { - if (!resp.ok) { return Promise.reject("Error: "+resp.status);} + 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 + 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; @@ -35,27 +35,53 @@ function loadGraph(graph, stat, minutes, interval){ document.getElementById("total_downloads").innerText = formatThousands(total); } else if (stat == "bandwidth") { document.getElementById("total_bandwidth").innerText = formatDataVolume(total, 3); + } else if (stat == "direct_bandwidth") { + document.getElementById("total_direct_bandwidth").innerText = formatDataVolume(total, 3); } }).catch(e => { - console.error("Error requesting time series: "+e); + console.error("Error requesting time series: " + e); + }) +} + +function loadDirectBW() { + let today = new Date() + let start = new Date() + start.setDate(start.getDate() - 30) + + fetch( + apiEndpoint + "/user/time_series/direct_bandwidth" + + "?start=" + start.toISOString() + + "&end=" + today.toISOString() + + "&interval=60" + ).then(resp => { + if (!resp.ok) { return Promise.reject("Error: " + resp.status); } + return resp.json(); + }).then(resp => { + let total = resp.amounts.reduce((accum, val) => accum += val, 0); + document.getElementById("direct_bandwidth_month").innerText = formatDataVolume(total, 4) + }).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 graphDirectBandwidth = drawGraph(document.getElementById("direct_bandwidth_chart"), "Direct Bandwidth", "bytes"); let graphTimeout = null; function updateGraphs(minutes, interval, live) { if (graphTimeout !== null) { clearTimeout(graphTimeout) } if (live) { - graphTimeout = setTimeout(() => {updateGraphs(minutes, interval, true)}, 10000) + graphTimeout = setTimeout(() => { updateGraphs(minutes, interval, true) }, 10000) } loadGraph(graphViews, "views", minutes, interval); loadGraph(graphDownloads, "downloads", minutes, interval); loadGraph(graphBandwidth, "bandwidth", minutes, interval); + loadGraph(graphDirectBandwidth, "direct_bandwidth", minutes, interval); + loadDirectBW() } // Default -updateGraphs(10080, 60, false); +updateGraphs(1440, 1, true); diff --git a/res/template/account/user_home.html b/res/template/account/user_home.html index d41f988..56c7a93 100644 --- a/res/template/account/user_home.html +++ b/res/template/account/user_home.html @@ -31,6 +31,11 @@
Here you can see how often your files are viewed, downloaded and how much bandwidth they consume. The buttons at the top - can be pressed to adjust the timeframe. If you choose 'Live' - or 'Day' the statistics will be updated periodically. No - need to refresh the page. + can be pressed to adjust the timeframe. If you choose 'Day' + the statistics will be updated periodically. No need to + refresh the page.
+ A view is counted when someone visits the download page of one + of your files. Views are unique per user per file. +
++ Downloads are counted when a user clicks the download button + on one of your files. It does not matter whether the + download is completed or not, only the start of the download + is counted. +
++ This is how much bandwidth your files are using in total. + Bandwidth is used when a file is tranferred from a + pixeldrain server to a user who is downloading the file. + When a 5 MB file is downloaded 8 times it has used 40 MB of + bandwidth. +
++ When a file is downloaded without going through pixeldrain's + download page it counts as a direct download. Because direct + downloads cost us bandwidth and don't generate any ad + revenue we have to limit them. When your direct link + bandwidth runs out people will be asked to do a test before + they can download your files. See our + subscription options to get more direct + linking bandwidth. +
+