]> www.average.org Git - pulsecounter.git/blobdiff - web/index.html
don't draw plot w/o data
[pulsecounter.git] / web / index.html
index 0c6c1777b3a1870ac20e2ce6fc4f9843fb2e3785..7c0b4a4af3c9554e27d316fd47732226cd6eb8b3 100644 (file)
@@ -9,7 +9,7 @@
   var ww, wh;
   var hmax, hfact;
   var tmin, tmax, tfact;
-  var xzero = 40, yzero = 48;
+  var xzero = 60, yzero = 48;
   var cold_d = [], hot_d = [];
 
   function showdate(utime) {
   const mn = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
 
-  function getcombx(lo, hi) {
+  function getcombx(tmin, tmax) {
     var comb = [], lb = [];
     var trange = tmax - tmin;
-    var inc, inc2, base, t, dt;
+    var inc, inc2, base, base2, t, dt, zoff;
     var label = function(t) { return "<<" + t.toFixed(1) + ">>"; }
     function tohour(t) { var dt = new Date(t*1000); return dt.getHours(); }
     function todow(t) { var dt = new Date(t*1000); return dow[dt.getDay()]; }
     else { /* ~ one month */
       /* TODO: make this a separate case with loop over months rather than
          fixed number of seconds. */
-      inc = 2592000;
+      inc = 86400;
       inc2 = 2592000;
       label = tomonth;
     }
 
     dt = new Date(tmin*1000);
-    base = (Math.floor(tmin / inc) + 1) * inc + 60 * dt.getTimezoneOffset();
+    zoff = 60 * dt.getTimezoneOffset();
+    base = (Math.floor((tmin - zoff - 1) / inc) + 1) * inc + zoff;
     for (t = base; t < tmax; t += inc)
       comb.push(t);
-    base = (Math.floor(tmin / inc2) + 1) * inc2 + 60 * dt.getTimezoneOffset();
-    for (t = base; t < tmax; t += inc2)
+    base2 = (Math.floor((tmin - zoff - 1) / inc2) + 1) * inc2 + zoff;
+    for (t = base2; t < tmax; t += inc2)
       lb.push([t, label(t)]);
-    //dbg.innerHTML = "ord=" + ord + "<br>inc=" + inc + "<br>"
+    //dbg.innerHTML = "inc=" + inc + "<br>inc2=" + inc2 + "<br>"
+    //              + "tmin=" + tmin + " tmax=" + tmax + "<br>"
+    //              + "base=" + base + " base2=" + base2 + "<br>"
     //              + comb + "<br>" + lb;
     return [comb, lb];
   }
 
   function xaxis() {
-    var comb = getcombx(0, hmax);
+    var comb = getcombx(tmin, tmax);
     var i;
 
     ctx.beginPath();
   function drawplot(data, color) {
     var i;
 
-    ctx.beginPath();
-    ctx.moveTo(px(data[0][0]), py(data[0][1]));
-    for (i = 1; i < data.length; i++) {
-      ctx.lineTo(px(data[i][0]), py(data[i - 1][1]));
-      ctx.lineTo(px(data[i][0]), py(data[i][1]));
+    if (data.length) {
+      ctx.beginPath();
+      ctx.moveTo(px(data[0][0]), py(data[0][1]));
+      for (i = 1; i < data.length; i++) {
+        ctx.lineTo(px(data[i][0]), py(data[i - 1][1]));
+        ctx.lineTo(px(data[i][0]), py(data[i][1]));
+      }
+      ctx.strokeStyle = color;
+      ctx.stroke();
     }
-    ctx.strokeStyle = color;
-    ctx.stroke();
   }
 
   function showloading() {
     document.getElementById("curhot").innerHTML =
       (data.current.hot / 100).toFixed(2);
 
-    document.getElementById("totcold").innerHTML =
-      ((data.cold[data.cold.length - 1][1] - data.cold[0][1]) * 10);
-    document.getElementById("tothot").innerHTML =
-      ((data.hot[data.hot.length - 1][1] - data.hot[0][1]) * 10);
+    if (data.cold.length)
+      document.getElementById("totcold").innerHTML =
+        ((data.cold[data.cold.length - 1][1] - data.cold[0][1]) * 10);
+    else document.getElementById("totcold").innerHTML = "0";
+    if (data.hot.length)
+      document.getElementById("tothot").innerHTML =
+        ((data.hot[data.hot.length - 1][1] - data.hot[0][1]) * 10);
+    else document.getElementById("tothot").innerHTML = "0";
 
     tmin = data.range.lo;
     tmax = data.range.hi;