annotate service/beacon/beaconmap.html @ 310:6ba2c88f9847

beaconmap rewrites with influxdb Ignore-this: 8f5e74d944a1abda0c758ea6e65df2f0
author drewp@bigasterisk.com
date Fri, 16 Sep 2016 01:27:28 -0700
parents 299ddd7e2070
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
1 <!doctype html>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
2 <html>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
3 <head>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
4 <title>beaconmap</title>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
5 <meta charset="utf-8" />
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
6 <script src="/lib/polymer/1.0.9/webcomponentsjs/webcomponents-lite.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
7 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
8 window.Polymer = {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
9 dom: 'shadow',
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
10 };
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
11 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
12 <link rel="import" href="/lib/polymer/1.0.9/polymer/polymer.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
13 <link rel="import" href="/lib/polymer/1.0.9/iron-ajax/iron-ajax.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
14 <link rel="import" href="/lib/polymer/1.0.9/iron-list/iron-list.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
15 <link rel="import" href="/lib/polymer/1.0.9/paper-header-panel/paper-header-panel.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
16 <link rel="import" href="/lib/polymer/1.0.9/iron-flex-layout/iron-flex-layout-classes.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
17 <style is="custom-style" include="iron-flex iron-flex-alignment iron-positioning"></style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
18
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
19 <script src="dat.gui.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
20 <link rel="import" href="house-model.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
21 </head>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
22 <body class="fullbleed layout vertical">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
23 <dom-module id="beacon-devices">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
24 <template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
25
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
26 <style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
27 iron-list { height: 100%; }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
28 .row { border: 1px outset #dadada; margin: 2px; background: #f7f7f7;}
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
29 .selected {
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
30 background: #9191ff;
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
31 }
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
32 </style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
33 <iron-ajax url="devices"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
34 auto
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
35 last-response="{{response}}"></iron-ajax>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
36 <iron-list items="[[response.devices]]"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
37 selection-enabled="true"
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
38 selected-item="{{selected}}"
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
39 selected-as="isSelected"
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
40 >
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
41 <template>
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
42 <div class$="row {{rowClass(isSelected)}}">
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
43 {{item.addr}} {{item.name}}
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
44 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
45 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
46 </iron-list>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
47 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
48 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
49 HTMLImports.whenReady(function () {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
50 Polymer({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
51 is: "beacon-devices",
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
52 properties: {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
53 response: { type: Object, notify: true },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
54 selected: { type: Object, notify: true },
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
55 },
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
56 rowClass: function (isSelected) {
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
57 return isSelected ? 'selected' : '';
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
58 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
59 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
60 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
61 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
62 </dom-module>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
63
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
64 <script src="/lib/rickshaw/90852d8/vendor/d3.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
65 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
66 var hashCode = function(s){
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
67 var hash = 0;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
68 if (s.length == 0) return hash;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
69 for (var i = 0; i < s.length; i++) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
70 var character = s.charCodeAt(i);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
71 hash = ((hash<<5)-hash)+character;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
72 hash = hash & hash; // Convert to 32bit integer
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
73 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
74 return hash;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
75 };
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
76 var colorForAddr = function(addr) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
77 var hue = hashCode(addr) % 360;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
78 return d3.hsl(hue, 1, 0.5) + "";
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
79 };
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
80 var colorForSensor = function(from) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
81 var hue = hashCode(from) % 360;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
82 return d3.hsl(hue, .7, 0.7) + "";
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
83 };
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
84 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
85
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
86 <dom-module id="beacon-sensor-graph">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
87 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/graph.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
88 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/detail.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
89 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/legend.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
90
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
91 <template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
92 <iron-ajax id="get" url="sensor" params='{{params}}' auto last-response="{{response}}"></iron-ajax>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
93 <div>{{sensor.from}}</div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
94 <div id="chart_container" on-click="onClick">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
95 <div id="chart"></div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
96 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
97
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
98 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
99 <script src="/lib/jquery-2.0.3.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
100 <script src="/lib/rickshaw/90852d8/vendor/d3.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
101 <script src="/lib/rickshaw/90852d8/rickshaw.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
102 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
103 HTMLImports.whenReady(function () {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
104 Polymer({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
105 is: "beacon-sensor-graph",
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
106 properties: {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
107 sensor: {type: Object},
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
108 response: {type: Object, notify: true},
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
109 params: {computed: '_params(sensor.from)'}
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
110 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
111 _params: function(from) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
112 return {from: from, secs: 60*5};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
113 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
114 observers: [
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
115 'onResponse(response)'
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
116 ],
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
117 ready: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
118 this.scopeSubtree(this.$.chart_container, true);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
119
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
120 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
121 onClick: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
122 this.$.get.generateRequest();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
123 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
124 redraw: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
125 var serieses = [];
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
126
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
127 for (var addr of Object.keys(this.points)) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
128 var pts = this.points[addr];
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
129 var transformed = pts.map(function(p) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
130 return {x: p[0] + this.startTime,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
131 y: .5 * (p[1]-(-120)) / (-60+120)};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
132 }.bind(this));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
133 serieses.push({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
134 name: addr,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
135 data: transformed,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
136 color: colorForAddr(addr),
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
137 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
138 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
139
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
140 this.$.chart.innerHTML = '';
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
141 var graph = new Rickshaw.Graph( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
142 element: this.$.chart,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
143 width: 400,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
144 height: 60,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
145 renderer: 'line',
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
146 series: serieses,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
147 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
148
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
149 graph.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
150
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
151 var hoverDetail = new Rickshaw.Graph.HoverDetail( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
152 graph: graph
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
153 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
154
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
155 var axes = new Rickshaw.Graph.Axis.Time( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
156 graph: graph
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
157 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
158 axes.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
159
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
160
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
161 var yAxis = new Rickshaw.Graph.Axis.Y( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
162 graph: graph,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
163 tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
164 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
165
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
166 yAxis.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
167
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
168 this.graph = graph;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
169 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
170 onResponse: function(response) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
171 this.points = response.points;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
172 this.startTime = response.startTime;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
173 this.redraw();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
174
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
175 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
176 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
177 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
178 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
179 </dom-module>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
180
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
181 <dom-module id="beacon-device-graph">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
182 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/graph.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
183 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/detail.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
184 <link rel="import" type="css" href="/lib/rickshaw/90852d8/src/css/legend.css">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
185 <template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
186
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
187 <div>{{addr}} (continuous update)</div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
188 <div id="chart_container" on-click="onClick">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
189 <div id="chart"></div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
190 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
191 <div>{{latest}}</div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
192 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
193 <script src="/lib/jquery-2.0.3.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
194 <script src="/lib/rickshaw/90852d8/vendor/d3.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
195 <script src="/lib/rickshaw/90852d8/rickshaw.min.js"></script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
196 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
197 HTMLImports.whenReady(function () {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
198 Polymer({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
199 is: "beacon-device-graph",
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
200 properties: {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
201 addr: {type: String, notify: true},
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
202 params: {computed: '_params(addr)'}
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
203
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
204 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
205 _params: function(from) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
206 return {addr: this.addr};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
207 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
208 observers: [
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
209 'onResponse(response)',
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
210 'startEvents(addr)',
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
211 ],
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
212 ready: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
213 this.scopeSubtree(this.$.chart_container, true);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
214 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
215 startEvents: function(addr) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
216 if (this.events) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
217 this.events.close();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
218 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
219 if (addr) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
220 console.log('new es', addr);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
221 this.events = new EventSource('points?addr=' + encodeURIComponent(addr));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
222 this.events.addEventListener('message', function(e) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
223 var body = JSON.parse(e.data);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
224 this.points = body.points;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
225 this.startTime = body.startTime;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
226 this.redraw();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
227 }.bind(this));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
228 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
229 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
230
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
231 onClick: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
232 this.$.get.generateRequest();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
233 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
234 redraw: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
235 var serieses = [];
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
236 var latestForSensor = {};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
237 for (var row of this.points) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
238 var transformed = row.points.map(function(p) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
239 return {x: p[0] + this.startTime,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
240 y: .5 * (p[1]-(-120)) / (-60+120)};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
241 }.bind(this));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
242 serieses.push({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
243 name: row.from,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
244 data: transformed,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
245 color: colorForSensor(row.from),
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
246 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
247 latestForSensor[row.from] = row.points[row.points.length - 1][1];
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
248 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
249 this.latest = JSON.stringify(latestForSensor);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
250 this.$.chart.innerHTML = '';
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
251 var graph = new Rickshaw.Graph( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
252 element: this.$.chart,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
253 width: 640,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
254 height: 300,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
255 renderer: 'line',
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
256 series: serieses,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
257 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
258
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
259 graph.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
260
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
261 var hoverDetail = new Rickshaw.Graph.HoverDetail( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
262 graph: graph
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
263 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
264
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
265 var axes = new Rickshaw.Graph.Axis.Time( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
266 graph: graph
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
267 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
268 axes.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
269
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
270 var yAxis = new Rickshaw.Graph.Axis.Y( {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
271 graph: graph,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
272 tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
273 } );
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
274
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
275 yAxis.render();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
276
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
277 this.graph = graph;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
278 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
279
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
280 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
281 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
282 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
283 </dom-module>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
284
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
285 <dom-module id="beacon-page">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
286 <template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
287 <link rel="import" href="/lib/polymer/1.0.9/iron-flex-layout/iron-flex-layout-classes.html">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
288 <style is="custom-style" include="iron-flex iron-flex-alignment iron-flex-factors"></style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
289 <style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
290 </style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
291 <paper-header-panel class="flex">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
292 <div class="paper-header">beacon map</div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
293 <div class="layout horizontal">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
294
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
295 <beacon-devices style="height: 500px"
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
296 class="layout justified flex-2"
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
297 selected="{{sel}}"></beacon-devices>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
298 <div class="layout vertical" style="flex-grow: 2">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
299 <house-model position-estimates="{{positionEstimates}}" beacons="{{beacons}}"></house-model>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
300 <beacon-device-graph addr="{{sel.addr}}"></beacon-device-graph>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
301 <div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
302 save white levels:
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
303 <iron-ajax url="save"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
304 method="POST"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
305 id="save"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
306 verbose="true"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
307 handle-as="text"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
308 last-response="{{saveResponse}}"></iron-ajax>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
309 <button on-click="onSave" style="padding: 20px">save</button> {{saveResponse}}
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
310 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
311
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
312 <div id="sensors">
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
313 <iron-ajax url="sensors"
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
314 auto
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
315 last-response="{{sensorsResponse}}"></iron-ajax>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
316 <template is="dom-repeat" items="{{sensorsResponse.sensors}}">
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
317 <div>sensor detail {{item}}</div>
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
318 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
319 </div>
310
6ba2c88f9847 beaconmap rewrites with influxdb
drewp@bigasterisk.com
parents: 291
diff changeset
320
291
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
321 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
322 </div>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
323 </paper-header-panel>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
324 beacon page gets this
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
325
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
326 </template>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
327 <script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
328 HTMLImports.whenReady(function () {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
329 Polymer({
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
330 is: "beacon-page",
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
331 properties: {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
332 sel: { type: Object, notify: true },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
333 saveResponse: { type: String, notify: true},
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
334 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
335 onSave: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
336 this.$.save.generateRequest();
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
337 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
338 ready: function() {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
339
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
340 this.sel = {addr: '00:ea:23:23:c6:c4'};
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
341
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
342 var events = new EventSource('positionEstimates?addr=' +
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
343 encodeURIComponent('00:ea:23:23:c6:c4'));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
344 events.addEventListener('message', function(e) {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
345 var body = JSON.parse(e.data);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
346 this.positionEstimates = body.nearest;
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
347 this.set('beacons', [{label: 'apollo', pos: body.weightedCoord}]);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
348 }.bind(this));
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
349 },
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
350 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
351 });
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
352
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
353 </script>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
354 </dom-module>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
355
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
356 <style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
357 .paper-header {
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
358 background-color: var(--paper-light-blue-500);
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
359 }
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
360 </style>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
361
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
362 <beacon-page class="layout fit"></beacon-page>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
363 </body>
299ddd7e2070 start bt beacon tools
drewp@bigasterisk.com
parents:
diff changeset
364 </html>