52 row = records[i]; |
49 row = records[i]; |
53 data.push(row); |
50 data.push(row); |
54 } |
51 } |
55 return data; |
52 return data; |
56 }, |
53 }, |
57 loadError: function(jqXHR, status, error) { |
54 loadError: function(jqXHR, status, error) { console.log(status + ' ' + error); }, |
58 $('#err').text(status + ' ' + error); |
|
59 }, |
|
60 }), |
55 }), |
61 gaugeoptionst = { |
56 gaugeoptionst = { |
62 min: 10, max: 40, width: 375, height: 375, |
57 min: 10, max: 40, width: 375, height: 375, |
63 ranges: [{ startValue: 10, endValue: 20, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
58 ranges: [{ startValue: 10, endValue: 20, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
64 { startValue: 20, endValue: 28, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
59 { startValue: 20, endValue: 28, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
107 url: url |
102 url: url |
108 }, |
103 }, |
109 dataAdapter = new $.jqx.dataAdapter(source, { |
104 dataAdapter = new $.jqx.dataAdapter(source, { |
110 loadComplete: function(records) { |
105 loadComplete: function(records) { |
111 record = dataAdapter.records[0]; |
106 record = dataAdapter.records[0]; |
112 var oline = (record.online) ? 'On-line' : 'Off-line'; |
107 updateScreen(); |
113 $('#info_uuid').html(record.uuid); |
|
114 $('#info_system').html(record.node + '/' + record.alias); |
|
115 $('#info_online').html(oline); |
|
116 $('#info_beer').html(record.beercode + ' - ' + record.beername); |
|
117 $('#info_mode').jqxDropDownList('selectItem', record.mode); |
|
118 blank['name'] = record.alias; |
108 blank['name'] = record.alias; |
119 blank['code'] = record.alias.toUpperCase(); |
109 blank['code'] = record.alias.toUpperCase(); |
120 blank['uuid'] = record.uuid; |
110 blank['uuid'] = record.uuid; |
121 |
111 } |
122 if (record.online && (record.mode != 'OFF')) { |
112 }); |
|
113 |
|
114 function updateScreen() { |
|
115 |
|
116 $('#info_uuid').html(record.uuid); |
|
117 $('#info_system').html(record.node + '/' + record.alias); |
|
118 $('#info_beer').html(record.beercode + ' - ' + record.beername); |
|
119 $('#info_mode').jqxDropDownList('selectItem', record.mode); |
|
120 |
|
121 if (record.online) { |
|
122 $('#info_online').html('On-line'); |
|
123 if (record.mode != 'OFF') { |
123 $('#ispindel_powerled').html('<div class="LEDblue_on"></div>Power'); |
124 $('#ispindel_powerled').html('<div class="LEDblue_on"></div>Power'); |
124 $('#select_beer').jqxDropDownList({ disabled: true }); |
125 $('#select_beer').jqxDropDownList({ disabled: true }); |
125 $('#select_beer').jqxDropDownList('clearSelection'); |
126 $('#select_beer').jqxDropDownList('clearSelection'); |
126 $('#select_beer').hide(); |
127 $('#select_beer').hide(); |
127 } else { |
128 } else { |
135 $('#ispindel_alarmled').html('<div class="LEDred_off"></div>Alarm'); |
136 $('#ispindel_alarmled').html('<div class="LEDred_off"></div>Alarm'); |
136 } |
137 } |
137 |
138 |
138 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: record.temperature.toFixed(3) + '°C' }}); |
139 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: record.temperature.toFixed(3) + '°C' }}); |
139 $('#gaugeContainer_temperature').jqxGauge({ value: record.temperature }); |
140 $('#gaugeContainer_temperature').jqxGauge({ value: record.temperature }); |
|
141 $('#gaugeContainer_temperature').jqxGauge({ disabled: false }); |
|
142 $('#gaugeContainer_gravity').jqxLinearGauge({ disabled: false }); |
140 |
143 |
141 var sg = plato_to_sg(record.gravity); |
144 var sg = plato_to_sg(record.gravity); |
142 |
|
143 $('#info_battery').val(record.battery); |
145 $('#info_battery').val(record.battery); |
144 $('#info_tilt').val(record.angle); |
146 $('#info_tilt').val(record.angle); |
145 $('#info_plato').val(record.gravity); |
147 $('#info_plato').val(record.gravity); |
146 $('#info_sg').val(sg); |
148 $('#info_sg').val(sg); |
147 |
149 |
148 if (record.og_gravity) { |
150 if (record.og_gravity) { |
149 var og = plato_to_sg(record.og_gravity); |
151 var og = plato_to_sg(record.og_gravity); |
150 var svg = calc_svg(og, sg); |
152 var svg = calc_svg(og, sg); |
151 |
153 var max = Math.ceil(og * 100, 0) * 10; |
|
154 |
|
155 console.log ('set max ' + max); |
|
156 $('#gaugeContainer_gravity').jqxLinearGauge({ max: max }); |
152 $('#vg_og1').html(og.toFixed(4)); |
157 $('#vg_og1').html(og.toFixed(4)); |
153 $('#vg_og2').html(record.og_gravity.toFixed(1) + '°P'); |
158 $('#vg_og2').html(record.og_gravity.toFixed(1) + '°P'); |
154 $('#vg_sg1').html(sg.toFixed(4)); |
159 $('#vg_sg1').html(sg.toFixed(4)); |
155 $('#vg_sg2').html(record.gravity.toFixed(1) + '°P'); |
160 $('#vg_sg2').html(record.gravity.toFixed(1) + '°P'); |
156 $('#vg_svg').html(svg.toFixed(1) + '%'); |
161 $('#vg_svg').html(svg.toFixed(1) + '%'); |
157 $('#vg_abv').html(abvol(og, sg).toFixed(2) + '%'); |
162 $('#vg_abv').html(abvol(og, sg).toFixed(2) + '%'); |
158 } else { |
163 } else { |
|
164 $('#gaugeContainer_gravity').jqxLinearGauge({ max: 1150 }); |
159 $('#vg_og1').html(''); |
165 $('#vg_og1').html(''); |
160 $('#vg_og2').html(''); |
166 $('#vg_og2').html(''); |
161 $('#vg_sg1').html(''); |
167 $('#vg_sg1').html(''); |
162 $('#vg_sg2').html(''); |
168 $('#vg_sg2').html(''); |
163 $('#vg_svg').html(''); |
169 $('#vg_svg').html(''); |
197 $('#info_tilt').jqxNumberInput(Show5dec); |
211 $('#info_tilt').jqxNumberInput(Show5dec); |
198 $('#info_plato').jqxNumberInput(Show2dec); |
212 $('#info_plato').jqxNumberInput(Show2dec); |
199 $('#info_sg').jqxNumberInput(Show4dec); |
213 $('#info_sg').jqxNumberInput(Show4dec); |
200 |
214 |
201 $('#gaugeContainer_temperature').jqxGauge(gaugeoptionst); |
215 $('#gaugeContainer_temperature').jqxGauge(gaugeoptionst); |
202 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: 'Temp: 00.000' }}); |
216 $('#gaugeContainer_temperature').jqxGauge({ caption: { value: '0.000°C' }}); |
203 $('#gaugeContainer_gravity').jqxLinearGauge(gaugeoptionsg); |
217 $('#gaugeContainer_gravity').jqxLinearGauge(gaugeoptionsg); |
204 |
218 |
205 srcMode = ['OFF', 'ON']; |
219 srcMode = ['OFF', 'ON']; |
206 $('#info_mode').jqxDropDownList({ theme: theme, source: srcMode, width: 100, height: 24, dropDownHeight: 65 }); |
220 $('#info_mode').jqxDropDownList({ theme: theme, source: srcMode, width: 100, height: 24, dropDownHeight: 65 }); |
207 |
221 |
208 function sendProduct(code, name, uuid) { |
222 // Get the data immediatly. |
209 |
|
210 console.log('sendProduct(' + code + ', ' + name + ', ' + uuid + ')'); |
|
211 var data = 'uuid=' + record.uuid + '&beeruuid=' + uuid + '&beercode=' + code + '&beername=' + name; |
|
212 $.ajax({ |
|
213 url: 'cmd_ispindel.php', |
|
214 data: data, |
|
215 type: 'POST', |
|
216 success: function(data) {}, |
|
217 error: function(jqXHR, textStatus, errorThrown) { console.log('sendProduct() error'); } |
|
218 }); |
|
219 } |
|
220 |
|
221 function sendMode(mode) { |
|
222 |
|
223 console.log('sendMode(' + mode + ')'); |
|
224 var data = 'uuid=' + record.uuid + '&mode=' + mode; |
|
225 $.ajax({ |
|
226 url: 'cmd_ispindel.php', |
|
227 data: data, |
|
228 type: 'POST', |
|
229 success: function(data) {}, |
|
230 error: function(jqXHR, textStatus, errorThrown) { console.log('sendMode() error'); } |
|
231 }); |
|
232 } |
|
233 |
|
234 // Get the data immediatly and then at regular intervals to refresh. |
|
235 dataAdapter.dataBind(); |
223 dataAdapter.dataBind(); |
236 setInterval(function() { |
|
237 var skip = false; |
|
238 if (newMode) { |
|
239 sendMode(record.mode); |
|
240 newMode = false; |
|
241 skip = true; |
|
242 } |
|
243 if (newProduct) { |
|
244 sendProduct(record.beercode, record.beername, record.beeruuid); |
|
245 newProduct = false; |
|
246 skip = true; |
|
247 } |
|
248 if (skip) { |
|
249 schedule = 4; // 2 seconds wait to get the results |
|
250 } else { |
|
251 if (schedule > 0) |
|
252 schedule--; |
|
253 } |
|
254 |
|
255 if (schedule <= 0) { |
|
256 dataAdapter.dataBind(); |
|
257 schedule = 20; |
|
258 } |
|
259 }, 500); |
|
260 |
224 |
261 $('#select_beer').on('select', function(event) { |
225 $('#select_beer').on('select', function(event) { |
262 if (event.args) { |
226 if (event.args) { |
263 var index = event.args.index, |
227 var index = event.args.index, |
264 datarecord = productlist.records[index]; |
228 datarecord = productlist.records[index]; |
265 record.beercode = datarecord.code; |
229 record.beercode = datarecord.code; |
266 record.beername = datarecord.name; |
230 record.beername = datarecord.name; |
267 record.beeruuid = datarecord.uuid; |
231 record.beeruuid = datarecord.uuid; |
268 newProduct = true; |
232 console.log('Select beer ' + record.beercode + ', ' + record.beername); |
|
233 websocket.send('{"device":"ispindels","node":"' + record.node + '","unit":"' + record.alias + |
|
234 '","beeruuid":"' + record.beeruuid + '","beercode":"' + record.beercode + '","beername":"' + record.beername + '"}'); |
269 } |
235 } |
270 }); |
236 }); |
271 $('#info_mode').on('select', function(event) { |
237 $('#info_mode').on('select', function(event) { |
272 if (event.args) { |
238 if (event.args && event.args.item.value != record.mode) { |
273 record.mode = event.args.item.value; |
239 record.mode = event.args.item.value; |
274 newMode = true; |
240 console.log('set mode ' + record.mode); |
|
241 websocket.send('{"device":"ispindels","node":"' + record.node + '","unit":"' + record.alias + '","mode":"' + record.mode + '"}'); |
275 } |
242 } |
276 }); |
243 }); |
277 |
244 |
278 // The chart button. |
245 // The chart button. |
279 $('#VLog').jqxButton({ template: 'primary', width: '150px', theme: theme }); |
246 $('#VLog').jqxButton({ template: 'primary', width: '150px', theme: theme }); |
280 $('#VLog').click(function() { |
247 $('#VLog').click(function() { |
281 window.open('log_ispindel.php?code=' + record.beercode + '&name=' + record.beername); |
248 window.open('log_ispindel.php?code=' + record.beercode + '&name=' + record.beername); |
282 }); |
249 }); |
|
250 |
|
251 websocket.onmessage = function(evt) { |
|
252 var msg = evt.data; |
|
253 var obj = JSON.parse(msg); |
|
254 if (obj.device == "ispindels" && obj.node == record.node) { |
|
255 console.log('ws got this device ' + msg); |
|
256 record.online = obj.online; |
|
257 if (obj.online) { |
|
258 record.beeruuid = obj.beeruuid; |
|
259 record.beercode = obj.beercode; |
|
260 record.beername = obj.beername; |
|
261 record.mode = obj.mode; |
|
262 record.alarm = obj.alarm; |
|
263 record.angle = obj.angle; |
|
264 record.temperature = obj.temperature; |
|
265 record.battery = obj.battery; |
|
266 record.gravity = obj.gravity; |
|
267 record.up_interval = obj.up_interval; |
|
268 record.og_gravity = obj.og_gravity; |
|
269 } |
|
270 updateScreen(); |
|
271 } |
|
272 ws_global(msg); |
|
273 } |
283 }); |
274 }); |