diff options
Diffstat (limited to 'ebus/webapp/static/src/ebus.js')
-rw-r--r-- | ebus/webapp/static/src/ebus.js | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/ebus/webapp/static/src/ebus.js b/ebus/webapp/static/src/ebus.js new file mode 100644 index 0000000..ad98d91 --- /dev/null +++ b/ebus/webapp/static/src/ebus.js @@ -0,0 +1,150 @@ +$(document).ready(function(){ + var from = Math.round(new Date().getTime()/1000) - 24*60*60; //86400; + var fromOverview = Math.round(new Date().getTime()/1000) - 30*24*60*60; //86400; + var to = Math.round(new Date().getTime()/1000); + var datasetDetail = [] + var datasetOverview = []; + var plotOverview = null; + var plotDetail = null; + var indexFound = null; + var sensorList = [{"sensorname":"heizkreisregler9.solarDaten.tempKollektor","show":true}, + {"sensorname":"heizkreisregler10.betriebsdatenRegler1.kesselTemperatur","show":true}, + {"sensorname":"heizkreisregler9.solarDaten.tempWarmwasserSolar","show":false}, + {"sensorname":"feuerungsautomat1.betriebsdatenRegler1.aussenTemperatur","show":true}, + {"sensorname":"heizkreisregler10.betriebsdatenRegler1.boilerTemperatur","show":true}]; + var replot = function() { + if (plotDetail == null) { + plotDetail = $.plot($("#ebusgraph"), + datasetDetail, + { + xaxis: { mode: "time"}, + legend: { show : true} + }); + } else { + plotDetail.setData(datasetDetail); + plotDetail.draw(); + plotDetail.setupGrid(); // redraw legend + } + }; + var replotOverview = function() { + if (plotOverview == null) { + plotOverview = $.plot($("#overview"), + datasetOverview, + { // options + series: { + lines: { show: true, lineWidth: 1 }, + shadowSize: 0 + }, + xaxis: { mode: "time" }, + yaxis: { ticks: [], min: 0, max: 100, autoscaleMargin: 0.1 }, + legend: { show: false }, + selection: { mode: "x" } + }); + } else { + plotOverview.setData(datasetOverview); + plotOverview.draw(); + } + plotOverview.setSelection({xaxis: {'from': from*1000, 'to': to*1000}}, true); + }; + var plotSensor = function(sensorname) { + plotSensorDetail(sensorname); + plotSensorOverview(sensorname); + }; + var unplotSensor = function(sensorname) { + unplotSensorDetail(sensorname); + unplotSensorOverview(sensorname); + }; + var plotSensorDetail = function(sensorname) { + $.getJSON("sensor/"+escape(sensorname)+"/"+from+"/"+to, + function(response) { + if (response['data']) { + datasetDetail.push({'data':response['data'], + 'label':sensorname}); + replot(); + } else { + alert("Fehler: " + response["error"]); + } + }); + }; + + var unplotSensorDetail = function(sensorname) { + $.each(datasetDetail, function(i, sensor) { + if (sensor.label == sensorname) { + datasetDetail.splice(i,1); + replot(); + return false; + } + }); + }; + + var plotSensorOverview = function(sensorname) { + $.getJSON("sensor_cached/"+escape(sensorname)+"/"+fromOverview, //+"/"+to, + function(response) { + if (response['data']) { + datasetOverview.push({'data':response['data'], + 'label':sensorname}); + replotOverview(); + } else { + alert("Overview Fehler: " + response["error"]); + } + }); + + }; + var unplotSensorOverview = function(sensorname) { + $.each(datasetOverview, function(i, sensor) { + if (sensor.label == sensorname) { + datasetOverview.splice(i,1); + replotOverview(); + return false; + } + }); + } + + $("#overview").bind("plotselected", function (event, ranges) { + range_from = Math.round(ranges.xaxis.from / 1000); + range_to = Math.round(ranges.xaxis.to / 1000); + // max selection range 14 days + if (range_to - range_from > 14 * 24 * 60 * 60) { + plotOverview.setSelection({xaxis: {'from': from*1000, 'to': to*1000}}, true); + return; + } else { + from = range_from; + to = range_to; + } + sensors = []; + for (elem in datasetOverview) { + sensor = datasetDetail[elem]["label"]; + sensors.push(sensor); + } + datasetDetail =[]; + for (i in sensors) { + plotSensorDetail(sensors[i]); + } + }); + + $.each(sensorList, function(i,sensorname) { + var pickerDiv = $("<div>").attr("id","pick_"+sensorname.sensorname.replace(/\./g,"_")) + .addClass("picker") + .appendTo("#sensorpicker"); + + var pickerCheckbox = $("<input>").attr("type","checkbox") + .appendTo(pickerDiv); + $(pickerDiv).append(sensorname.sensorname); + if (sensorname.show) { + //Plot + plotSensor(sensorname.sensorname); + $(pickerCheckbox).attr("checked","checked"); + } + }); + // TODO http://people.iola.dk/olau/flot/examples/annotating.html + + + $('.picker input').click( function() { + var sensorname = $(this).parent().attr("id").replace("pick_","").replace(/_/g,"."); + if ($(this).is(":checked")) { + plotSensor(sensorname); + } else { + unplotSensor(sensorname); + } + }); +}); |