X-Git-Url: http://www.average.org/gitweb/?p=pulsecounter.git;a=blobdiff_plain;f=web%2Findex.html;h=f70f51b05686131df6ff06c82a605a3fdcebf1f8;hp=9170885ed902f4ce41728adc2dace7b4e6bf5ab9;hb=c8af811215f62722a7788dd6754e66c72c90bcf8;hpb=97b05be5674c0fa9562ce531a12f89e7462dcc6b diff --git a/web/index.html b/web/index.html index 9170885..f70f51b 100644 --- a/web/index.html +++ b/web/index.html @@ -10,7 +10,7 @@ var ww, wh; var hmax, hfact; var tmin, tmax, tfact; - var xzero = 20, yzero = 20; + var xzero = 36, yzero = 24; var cold_d = [], hot_d = []; function showdate(utime) { @@ -25,16 +25,16 @@ var scl = Math.floor(d / ord); var inc, inc2, first, x, lb; - if (scl < 2) { inc = 0.1; inc2 = 0.5; } - else if (scl < 5) { inc = 0.2; inc2 = 1; } - else { inc = 0.5; inc2 = 2; } + if (scl < 2) { inc = 0.1; inc2 = 0.2; } + else if (scl < 5) { inc = 0.1; inc2 = 0.2; } + else { inc = 0.5; inc2 = 1; } inc *= ord; inc2 *= ord; first = (Math.floor(lo / inc) + 1) * inc; - for (x = 0; x < (d / inc) - 1.5; x++) + for (x = 0; x < (d / inc) - 1.2; x++) comb.push(first + inc * x); first = (Math.floor(lo / inc2) + 1) * inc2; - for (x = 0; x < (d / inc2) - 1.5; x++) + for (x = 0; x < (d / inc2) - 1.2; x++) lb.push(first + inc2 * x); //dbg.innerHTML = "ord=" + ord + "
inc=" + inc + "
" // + comb + "
" + lb; @@ -55,6 +55,13 @@ ctx.lineTo(px(tmax), py(0)); ctx.strokeStyle = "black"; ctx.stroke(); + + ctx.fillStyle = "black"; + ctx.font = "bold 12px Courier"; + ctx.textAlign = "left"; + ctx.fillText(showdate(tmin), px(tmin), py(0) + 20); + ctx.textAlign = "right"; + ctx.fillText(showdate(tmax), px(tmax), py(0) + 20); } function yaxis() { @@ -76,12 +83,14 @@ ctx.stroke(); ctx.fillStyle = "black"; - ctx.font = "bold 8px Courier"; - ctx.fillText(0, px(tmin) - 8, py(0)); + ctx.font = "bold 12px Courier"; + ctx.textAlign = "right"; + ctx.fillText(0, px(tmin) - 6, py(0)); for (i = 0; comb[1][i]; i++) { - ctx.fillText(comb[1][i], px(tmin) - xzero + 2, py(comb[1][i])); + ctx.fillText(comb[1][i].toFixed(1), px(tmin) - 6, py(comb[1][i])); } - ctx.fillText("l/h", px(tmin) + 2, py(hmax) + 8); + ctx.textAlign = "left"; + ctx.fillText("l/h", px(tmin) + 4, py(hmax) + 8); } /* @ updates global var `hmax` */ @@ -98,7 +107,7 @@ res.push([times[i][0], v]); } } - res.push([times[i][0], v]); + if (i) res.push([times[i][0], v]); return res; } @@ -119,7 +128,16 @@ function showloading() { ctx.fillStyle = "green"; ctx.font = "bold 16px Courier"; - ctx.fillText("loading", (ww / 2) - 40 , (wh / 2) + 8); + ctx.textAlign="center"; + ctx.fillText("...loading...", (ww / 2) , (wh / 2) + 8); + } + + function showempty() { + ctx.fillStyle = "red"; + ctx.font = "bold 24px Courier"; + ctx.textAlign="center"; + ctx.fillText("No data for the requested time interval", + (ww / 2) , (wh / 2) + 8); } function clearplot() { @@ -127,16 +145,16 @@ } function redraw() { - if (cold_d.length && hot_d.length) { + clearplot(); + if (cold_d.length || hot_d.length) { tfact = (ww - xzero) / (tmax - tmin); hfact = (wh - yzero) / hmax; - clearplot(); xaxis(); yaxis(); drawplot(cold_d, "blue"); drawplot(hot_d, "red"); } else { - showloading(); + showempty(); } } @@ -147,8 +165,8 @@ (data.current.hot / 100).toFixed(2); tmin = data.range.lo; tmax = data.range.hi; - dbg.innerHTML = "from " + tmin + " to " + tmax - + "
from " + showdate(tmin) + " to " + showdate(tmax); + //dbg.innerHTML = "from " + tmin + " to " + tmax + // + "
from " + showdate(tmin) + " to " + showdate(tmax); /* differetiate() updates hmax */ hmax = 0; cold_d = differentiate(data.cold); @@ -174,6 +192,8 @@ } } xmlhttp.open("GET", url, true); + clearplot(); + showloading(); xmlhttp.send(); } @@ -188,22 +208,70 @@ redraw(); } + function daystart(date) { + date.setMilliseconds(0); + date.setSeconds(0); + date.setMinutes(0); + date.setHours(0); + return date; + } + + function prevweek() { + var tdy = daystart(new Date()); + var dow = tdy.getDay(); + var wstart, wend; + + wstart = new Date(1*tdy - 86400000 * (dow + 7)); + wend = new Date(1*wstart + 86400000 * 7); + xmlhttp = new XMLHttpRequest(); + sendquery(wstart.toISOString(), wend.toISOString()); + } + + function thisweek() { + var tdy = daystart(new Date()); + var dow = tdy.getDay(); + var wstart, wend; + + wstart = new Date(1*tdy - 86400000 * dow); + wend = new Date(1*wstart + 86400000 * 7); + xmlhttp = new XMLHttpRequest(); + sendquery(wstart.toISOString(), wend.toISOString()); + } + + function beforeyesterday() { + var tdy = daystart(new Date()); + var ytd = new Date(1*tdy - 86400000); + var byd = new Date(1*ytd - 86400000); + xmlhttp = new XMLHttpRequest(); + sendquery(byd.toISOString(), ytd.toISOString()); + } + + function yesterday() { + var tdy = daystart(new Date()); + var ytd = new Date(1*tdy - 86400000); + xmlhttp = new XMLHttpRequest(); + sendquery(ytd.toISOString(), tdy.toISOString()); + } + + function today() { + var tdy = daystart(new Date()); + var tmr = new Date(1*tdy + 86400000); + xmlhttp = new XMLHttpRequest(); + sendquery(tdy.toISOString(), tmr.toISOString()); + } + function initialize() { - var tdy = new Date(); - var tmr; - - tdy.setMilliseconds(0); - tdy.setSeconds(0); - tdy.setMinutes(0); - tdy.setHours(0); - tmr = new Date(1*tdy + 86400000); dbg = document.getElementById("debug"); canvas = document.getElementById("plot"); ctx = canvas.getContext("2d"); resize(); + today(); - xmlhttp = new XMLHttpRequest(); - sendquery(tdy.toISOString(), tmr.toISOString()); + document.getElementById("today").onclick = today; + document.getElementById("yesterday").onclick = yesterday; + document.getElementById("beforeyesterday").onclick = beforeyesterday; + document.getElementById("thisweek").onclick = thisweek; + document.getElementById("prevweek").onclick = prevweek; } /* Set up */ @@ -260,7 +328,29 @@ canvas#plot { display: block; width: 640px; height: 320px; + /* border: solid 1px black; */ +} +div#queries { + margin-left: auto; + margin-right: auto; + margin-bottom: 10px; + text-align: center; +} +div.query { + display: inline-block; + position: relative; + width: 8em; + height: 8em; border: solid 1px black; + background-color: lightgray; + cursor: pointer; +} +div.label { + display: block; + width: 100%; + position: absolute; + top: 50%; + transform: translate(0, -50%); } body { margin: 0px; @@ -277,6 +367,14 @@ body {

-
+
+
PREVIOUS WEEK
+
DAY + BEFORE YESTERDAY
+
YESTERDAY
+
TODAY
+
THIS WEEK
+
+