Mercurial > code > home > repos > homeauto
view service/theaterArduino/watchpins.html @ 115:c860b8c10de9
move watchpins from /room, add a graph
Ignore-this: 32e58e567fb1fc0567fd2877319aaeff
author | drewp@bigasterisk.com |
---|---|
date | Mon, 16 Sep 2013 08:20:18 -0700 |
parents | |
children |
line wrap: on
line source
<html> <head> </head> <body> theater motion sensor history: <div id="chart_div" style="width: 900px; height: 250px;"></div> max age: <input type="range" name="maxAge" min="10" max="300" value="180"> <div id="status"></div> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); var latestData = null; var chart = null; function loop() { getNewPoints(); setTimeout(function () { webkitRequestAnimationFrame(loop); }, 1200); } google.setOnLoadCallback(function () { chart = new google.visualization.LineChart(document.getElementById('chart_div')) loop(); }); function getValue(subj, pred, trig) { var groups = trig.match('<'+subj+'> <'+pred+'> "(.*?)"'); if (groups == null) { return null; } return groups[1]; } function getNewPoints() { $("#status").text("get graph..."); $.ajax({ url: "graph", success: function(data) { $("#status").text(""); var pointsJson = getValue( "http://projects.bigasterisk.com/device/theaterDoorOutsideMotion", "http://projects.bigasterisk.com/room/history", data); var realPoints = []; if (pointsJson != null) { realPoints = JSON.parse(pointsJson); } var steppedPoints = new google.visualization.DataTable(); steppedPoints.addColumn('number', 't'); steppedPoints.addColumn('number', 'value'); var prev = null; realPoints.forEach(function(r) { if (prev) { steppedPoints.addRows([[r[0], prev[1]]]); } steppedPoints.addRows([[r[0], r[1]]]); prev = r; }); latestData = steppedPoints; redraw(); } }); } $("input[name=maxAge]").change(redraw); function redraw() { // https://developers.google.com/chart/interactive/docs/gallery/linechart#Configuration_Options var options = { title: 'theaterDoorOutsideMotion', legend: { position: "none", }, lineWidth: .5, hAxis: { title: "seconds ago", viewWindow: { min: -$("input[name=maxAge]").val(), max: 0 }, gridlines: { count: -1 } }, vAxis: { baseline: -999, title: "motion sensed", viewWindow: { min: -.5, max: 1.5, } } }; chart.draw(latestData, options); } </script> </body> </html>