aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2018-03-31 21:00:04 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2018-03-31 21:00:04 +0100
commit5531f72248d0372000fe09e031e5a70fb11dafe7 (patch)
tree1c09b1b37a583d9f73311d4f0119bfc9cc987f89 /public/javascripts
parentf53f1d433b5d458ff0b8a5893e8127a8be3630f7 (diff)
downloadtplink-energy-monitor-5531f72248d0372000fe09e031e5a70fb11dafe7.tar.xz
tplink-energy-monitor-5531f72248d0372000fe09e031e5a70fb11dafe7.zip
Add monthly usage graph
Diffstat (limited to 'public/javascripts')
-rw-r--r--public/javascripts/dash.js62
1 files changed, 61 insertions, 1 deletions
diff --git a/public/javascripts/dash.js b/public/javascripts/dash.js
index 3d02fd8..c8710db 100644
--- a/public/javascripts/dash.js
+++ b/public/javascripts/dash.js
@@ -7,14 +7,17 @@ var dash = {
realtimeTrendLastSample: 0,
dailyUsageChart: null,
+ monthlyUsageChart: null,
init: function() {
this.initRealtimeGauge();
this.initRealtimeTrendChart();
this.initDailyUsageChart();
+ this.initMonthlyUsageChart();
this.startPolling();
this.getDailyUsageData();
+ this.getMonthlyUsageData();
},
initRealtimeGauge: function() {
@@ -113,6 +116,37 @@ var dash = {
});
},
+ initMonthlyUsageChart: function() {
+ var ctx = document.getElementById('mu-chart').getContext('2d');
+ this.monthlyUsageChart = new Chart(ctx, {
+ type: 'bar',
+ data: {
+ datasets: [{
+ label: "Energy (kWH)",
+ borderColor: 'rgb(255, 99, 132)',
+ backgroundColor: 'rgb(255, 99, 132)',
+ data: []
+ }]
+ },
+ options: {
+ legend: {
+ display: false
+ },
+ scales: {
+ yAxes: [{
+ ticks: {
+ beginAtZero:true
+ }
+ }]
+ },
+ maintainAspectRatio: false,
+ tooltips: {
+ intersect: false
+ },
+ }
+ });
+ },
+
realtimeTrendChartOnRefresh: function(chart) {
chart.data.datasets.forEach(function(dataset) {
dataset.data.push({
@@ -194,7 +228,33 @@ var dash = {
});
dash.dailyUsageChart.update();
- }
+ },
+
+ getMonthlyUsageData: function() {
+ $.ajax({
+ url: "/energy-usage/1/month-stats",
+ type: "GET",
+ success: function(data) {
+ dash.parseMonthlyUsageData(data);
+ },
+ dataType: "json",
+ timeout: 4000
+ });
+ },
+
+ parseMonthlyUsageData: function(usageData) {
+ usageData.forEach(function(entry) {
+ // Months from API response are 1 based
+ var month = moment().month(entry.month -1);
+
+ dash.monthlyUsageChart.data.labels.push(month.format('MMM'));
+ dash.monthlyUsageChart.data.datasets.forEach(function(dataset) {
+ dataset.data.push(entry.energy);
+ });
+ });
+
+ dash.monthlyUsageChart.update();
+ },
};