sensorgauges
[svn42.git] / raspberry-kiosk / kiosk.js
index 420e5af..d506e1e 100644 (file)
@@ -164,40 +164,54 @@ function loadCalendarMainPage()
   });
 }
 
-
+var gauges = {}
 function drawGauge(targetelem, label, temp, options) {
-    var data = google.visualization.arrayToDataTable([["Label", "Value"],[label,temp]]);
     // Create and draw the visualization.
     if (targetelem)
     {
-        options["width"] = targetelem.getAttribute("width");
-        options["height"] = targetelem.getAttribute("height");
-        var chart = new google.visualization.Gauge(targetelem);
-        chart.draw(data, options);
+        var data = google.visualization.arrayToDataTable([["Label", "Value"],[label,temp]]);
+        if (!gauges.hasOwnProperty(targetelem.id)) {
+            gauges[targetelem.id] = new google.visualization.Gauge(targetelem);
+        }
+        gauges[targetelem.id].draw(data, options);
     }
 }
 
-function drawLineGraph(targetelem, dataarray, options) {
-  if (dataarray) {
-      var data = google.visualization.arrayToDataTable(dataarray);
-      // Create and draw the visualization.
-      if (targetelem)
-      {
-          options["width"]= targetelem.getAttribute("width");
-          options["height"]=targetelem.getAttribute("height");
-          new google.visualization.LineChart(targetelem).draw(data, options);
-        }
+var linecharts = {}
+function drawLineGraph(targetelem, dataarray, options, x_is_epochdate) {
+  if (dataarray && targetelem) {
+    var data;
+    if (x_is_epochdate) {
+      data=new google.visualization.DataTable();
+      data.addColumn('datetime',dataarray[0][0]);
+      for (var c=1; c<dataarray[0].length; c++) {
+        data.addColumn('number',dataarray[0][c]);
+      }
+      for (var r=1; r<dataarray.length; r++) {
+        dataarray[r][0] = new Date(dataarray[r][0]*1000);
+        data.addRow(dataarray[r]);
+      }
+    } else {
+      data = google.visualization.arrayToDataTable(dataarray);
     }
+    // Create and draw the visualization.
+    options["width"]= targetelem.getAttribute("width");
+    options["height"]=targetelem.getAttribute("height");
+    if (!linecharts.hasOwnProperty(targetelem.id)) {
+      linecharts[targetelem.id] = new google.visualization.LineChart(targetelem);
+    }
+    linecharts[targetelem.id].draw(data, options);
+  }
 }
 
 function loadAndDrawSensorData() {
   $.getJSON("https://realraum.at/shmcache/r3sensors.json", function(data){
     drawLineGraph(document.getElementById('tempgooglegraph'), data["TempSensorUpdate"],
-      {curveType: "function", title: 'Temperature Sensors', colors: ['#FF0000','#CC0033','#660000','#CC3333'], chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}}  );
+      {curveType: "function", title: 'Temperature Sensors', colors: ['#FF0000','#CC0033','#660000','#CC3333'], chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}} ,true);
     drawLineGraph(document.getElementById('lightgooglegraph'), data["IlluminationSensorUpdate"],
-        {curveType: "none", title: 'Illumination Sensors', vAxis: {maxValue: 1024, minValue:5}, chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}}  );
+        {curveType: "none", title: 'Illumination Sensors', vAxis: {maxValue: 1024, minValue:5}, chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}} ,true);
     drawLineGraph(document.getElementById('movementgooglegraph'), data["MovementSensorUpdate"],
-        {curveType: "none", title: 'Movement Sensors', vAxis: {maxValue: 10, minValue:0}, chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}}  );
+        {curveType: "function", title: 'Movement Sensors', vAxis: {maxValue: 10, minValue:0}, chartArea:{left:32,top:20,width:"88%",height:"83%"}, legend: {position: "none"}} ,true);
     });
 }
 
@@ -404,11 +418,11 @@ $(document).ready(function()
     loadCalendarMainPage();
     setInterval("loadCalendarMainPage()", 123*1000);
   }
-  if (document.getElementById("sensorgraphs"))
-  {
-    setInterval("updateSensors()",145*1000);
-  }
-  if (document.getElementById("tempgooglegraph") || document.getElementById("lightgooglegraph"))
+//  if (document.getElementById("sensorgraphs"))
+//  {
+//    setInterval("updateSensors()",145*1000);
+//  }
+  if (document.getElementById("tempgooglegraph") || document.getElementById("lightgooglegraph") || document.getElementById("movementgooglegraph"))
   {
     loadAndDrawSensorData();
     setInterval("loadAndDrawSensorData()",145*1000);