From 0fac8b29f87e2a37897606ec9215c0667b8fe965 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 9 Nov 2016 16:57:58 +0100 Subject: [PATCH] Finished change of chart api. issue 1 --- resource/web/pc_overview.tmpl | 64 +++++++++++++++++-------- src/se/hal/page/PCOverviewHttpPage.java | 2 + 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/resource/web/pc_overview.tmpl b/resource/web/pc_overview.tmpl index 69d6f469..2869b083 100755 --- a/resource/web/pc_overview.tmpl +++ b/resource/web/pc_overview.tmpl @@ -29,37 +29,25 @@ function initChart(elementId, url, time){ $.getJSON(url, function(json){ - var dataXs = {}; - var data = []; - var labels = []; - json.forEach(function(d, i) { - var index = 'data'+i; - labels[index] = d.name; - dataXs[index] = 'data'+i+'x'; - data.push([index+'x'].concat(d.timestamps)); - data.push([index].concat(d.data)); - }); - var chart = c3.generate({ bindto: elementId, - data: { - xs: dataXs, - columns: data, - names: labels, - type: 'spline', - xFormat: null, - }, + data: getChartData(json), axis : { x : { type : 'timeseries', - label: 'Timestamp' + label: 'Timestamp', + tick: { + format: '%Y-%m-%d %H:%M' + } }, y: { - label: 'Power' + label: 'Power (kWh)', + min: 0, }, y2: { show: true, - label: 'Temperature' + label: 'Temperature (C)', + min: 0, } }, grid: { @@ -69,7 +57,41 @@ show: false } }); + + if(time > 0) + setTimeout(function(){ updateChart(chart, url, time); }, time); }); } + function updateChart(chart, url, time){ + $.getJSON(url, function(json){ + chart.flow(getChartData(json)); + }); + setTimeout(function(){ updateChart(chart, url, time); }, time); + } + function getChartData(json){ + var dataXaxis = {}; + var dataYaxis = {}; + var data = []; + var labels = []; + json.forEach(function(sensor, i) { + var index = 'data'+i; + labels[index] = sensor.user +": "+ sensor.name; + dataXaxis[index] = 'data'+i+'x'; + data.push([index+'x'].concat(sensor.timestamps)); + data.push([index].concat(sensor.data)); + if (sensor.type == "PowerConsumptionSensorData") + dataYaxis[index] = 'y'; + else //if (sensor.type == "TemperatureSensorData") + dataYaxis[index] = 'y2'; + }); + + return { + xs: dataXaxis, + columns: data, + names: labels, + type: 'spline', + axes: dataYaxis, + }; + } diff --git a/src/se/hal/page/PCOverviewHttpPage.java b/src/se/hal/page/PCOverviewHttpPage.java index 883d656e..f3d1c768 100755 --- a/src/se/hal/page/PCOverviewHttpPage.java +++ b/src/se/hal/page/PCOverviewHttpPage.java @@ -109,6 +109,8 @@ public class PCOverviewHttpPage extends HalHttpPage implements HalHttpPage.HalJs DataNode deviceNode = new DataNode(DataNode.DataType.Map); deviceNode.set("name", sensor.getName()); + deviceNode.set("user", sensor.getUser().getUsername()); + deviceNode.set("type", sensor.getDeviceConfig().getSensorDataClass().getSimpleName()); deviceNode.set("timestamps", timestampNode); deviceNode.set("data", dataNode); root.add(deviceNode);