<script>
var canvas;
var context;
+ var ww;
+ var wh;
+ var hfact;
+ var tmin;
+ var tmax;
+ var tfact;
+ function px(x) {
+ return (x - tmin) * tfact;
+ }
+ function py(y) {
+ return (wh - y * hfact);
+ }
function drawplot(times, color) {
- var tmin = times[0][0];
- var tfact = 640/(times[times.length-1][0] - tmin);
var i;
var height = [];
var hmax = 0;
- var hfact;
+ tfact = ww / (tmax - tmin);
for (i = 1; i < times.length; i++) {
- height[i] = 1 / (times[i][0] - times[i-1][0]);
+ height[i] = (times[i][1] - times[i-1][1]) / (times[i][0] - times[i-1][0]);
if (hmax < height[i]) hmax = height[i];
}
height[i+1] = height[i];
- hfact = 480 / hmax;
+ hfact = wh / hmax;
+
context.beginPath();
- context.moveTo(0, 480 - height[1]*hfact);
+ context.moveTo(px(times[0][1]), py(height[1]));
for (i = 1; i < times.length; i++) {
- context.lineTo((times[i][0] - tmin)*tfact,480 - height[i]*hfact);
- context.lineTo((times[i][0] - tmin)*tfact,480 - height[i+1]*hfact);
+ context.lineTo(px(times[i][0]), py(height[i]));
+ context.lineTo(px(times[i][0]), py(height[i+1]));
}
+ context.lineTo(px(tmax), py(height[i+1]));
+
context.strokeStyle = color;
context.stroke();
}
function gotdata(data) {
canvas = document.getElementById("plot");
context = canvas.getContext("2d");
+ ww = canvas.width;
+ wh = canvas.height;
+ tmin = data.range.lo;
+ tmax = data.range.hi;
+ document.getElementById("cold").innerHTML = data.current.cold / 100;
+ document.getElementById("hot").innerHTML = data.current.hot / 100;
drawplot(data.cold, "blue");
drawplot(data.hot, "red");
}
</script>
+<style>
+h1 {
+ text-align: center;
+}
+br {
+ clear: both;
+}
+div#currentvals {
+ width: 14em;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 10px;
+ text-align: center;
+ font-size: 150%;
+}
+div.current {
+ position: relative;
+ padding: 0.2em;
+ border: solid 1px black;
+ margin: 0.2em;
+}
+div#cold {
+ float: left;
+ background-color: #d0e0ff;
+}
+div#hot {
+ float: right;
+ background-color: #ffd0e0;
+}
+canvas#plot {
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+ width: 640px;
+ height: 480px;
+ border: solid 1px black;
+}
+</style>
+<title>Water Meters</title>
</head><body>
-<canvas id="plot" width="640" height = "480"
- style="border:solid 1px #000000;"></canvas>
-<hr/>
+<h1>Water Meters</h1>
+<div id="currentvals">
+ Current Values
+ <div class="current" id="cold">cold</div>
+ <div class="current" id="hot">hot</div>
+</div>
+<br />
+<canvas id="plot" width="640" height = "480"></canvas>
+<br />
<div id=debug>
</div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "query.cgi";
+ var qstr = "?lo=2015-12-19+00:00:00&hi=2015-12-20+00:00:00";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
gotdata(myData);
}
}
- xmlhttp.open("GET", url, true);
+ xmlhttp.open("GET", url+qstr, true);
xmlhttp.send();
</script>
</body>