59 cache: false, |
59 cache: false, |
60 datafields: [ |
60 datafields: [ |
61 { name: 'code', type: 'string' }, |
61 { name: 'code', type: 'string' }, |
62 { name: 'name', type: 'string' }, |
62 { name: 'name', type: 'string' }, |
63 { name: 'uuid', type: 'string' }, |
63 { name: 'uuid', type: 'string' }, |
64 { name: 'stage', type: 'string' }, |
64 { name: 'stage', type: 'int' }, |
|
65 { name: 'yeast_lo', type: 'float' }, |
|
66 { name: 'yeast_hi', type: 'float' } |
65 ], |
67 ], |
66 id: 'code', |
68 id: 'code', |
67 url: "includes/db_product.php?select=ferment" |
69 url: "includes/db_product.php?select=ferment" |
68 }; |
70 }; |
69 var productlist = new $.jqx.dataAdapter(productSource, { |
71 var productlist = new $.jqx.dataAdapter(productSource, { |
71 var data = new Array(); |
73 var data = new Array(); |
72 // Create a dummy beer on top to store in idle fermenters. |
74 // Create a dummy beer on top to store in idle fermenters. |
73 blank['code'] = "Free"; // Will override this later. |
75 blank['code'] = "Free"; // Will override this later. |
74 blank['name'] = 'Dummy'; |
76 blank['name'] = 'Dummy'; |
75 blank['uuid'] = '66ecccbf-e942-4a35-af49-8b02314561a5'; |
77 blank['uuid'] = '66ecccbf-e942-4a35-af49-8b02314561a5'; |
76 blank['stage'] = "Ready"; |
78 blank['stage'] = 10; |
|
79 blank['yeast_lo'] = 12.0; |
|
80 blank['yeast_hi'] = 24.0; |
77 data.push(blank); |
81 data.push(blank); |
78 for (var i = 0; i < records.length; i++) { |
82 for (var i = 0; i < records.length; i++) { |
79 var row = records[i]; |
83 var row = records[i]; |
80 data.push(row); |
84 data.push(row); |
81 } |
85 } |
247 console.log("sendBase() error"); |
251 console.log("sendBase() error"); |
248 } |
252 } |
249 }); |
253 }); |
250 } |
254 } |
251 |
255 |
252 function sendProduct(code, name, uuid) { |
256 function sendProduct(code, name, uuid, yeast_lo, yeast_hi) { |
253 |
257 |
254 console.log("sendProduct("+code+", "+name+", "+uuid+")"); |
258 console.log("sendProduct("+code+", "+name+", "+uuid+", "+yeast_lo+", "+yeast_hi+")"); |
255 var data = 'node='+record.node+'&alias='+record.alias+'&payload='; |
259 var data = 'node='+record.node+'&alias='+record.alias+'&payload='; |
256 data += '{"product":{"code":"'+code+'","name":"'+name+'","uuid":"'+uuid+'"}}'; |
260 data += '{"product":{"code":"'+code+'","name":"'+name+'","uuid":"'+uuid+'","yeast_lo":'+yeast_lo+',"yeast_hi":'+yeast_hi+'}}'; |
257 $.ajax({ |
261 $.ajax({ |
258 url: "cmd_fermenter.php", |
262 url: "cmd_fermenter.php", |
259 data: data, |
263 data: data, |
260 type: "POST", |
264 type: "POST", |
261 success: function(data) { |
265 success: function(data) { |
290 datafields: [ |
294 datafields: [ |
291 { name: 'record', type: 'int' }, |
295 { name: 'record', type: 'int' }, |
292 { name: 'uuid', type: 'string' }, |
296 { name: 'uuid', type: 'string' }, |
293 { name: 'alias', type: 'string' }, |
297 { name: 'alias', type: 'string' }, |
294 { name: 'node', type: 'string' }, |
298 { name: 'node', type: 'string' }, |
295 { name: 'online', type: 'bool' }, |
299 { name: 'online', type: 'int' }, |
296 { name: 'beercode', type: 'string' }, |
300 { name: 'beercode', type: 'string' }, |
297 { name: 'beername', type: 'string' }, |
301 { name: 'beername', type: 'string' }, |
298 { name: 'air_state', type: 'string' }, |
302 { name: 'air_state', type: 'string' }, |
299 { name: 'air_temperature', type: 'float' }, |
303 { name: 'air_temperature', type: 'float' }, |
300 { name: 'beer_state', type: 'string' }, |
304 { name: 'beer_state', type: 'string' }, |
323 { name: 'profile_state', type: 'string' }, |
327 { name: 'profile_state', type: 'string' }, |
324 { name: 'profile_percent', type: 'int' }, |
328 { name: 'profile_percent', type: 'int' }, |
325 { name: 'profile_inittemp_high', type: 'float' }, |
329 { name: 'profile_inittemp_high', type: 'float' }, |
326 { name: 'profile_inittemp_low', type: 'float' }, |
330 { name: 'profile_inittemp_low', type: 'float' }, |
327 { name: 'profile_steps', type: 'string' }, |
331 { name: 'profile_steps', type: 'string' }, |
328 { name: 'stage', type: 'string' } |
332 { name: 'stage', type: 'string' }, |
|
333 { name: 'beeruuid', type: 'string' }, |
|
334 { name: 'yeast_lo', type: 'float' }, |
|
335 { name: 'yeast_hi', type: 'float' } |
329 ], |
336 ], |
330 id: 'record', |
337 id: 'record', |
331 url: url |
338 url: url |
332 }; |
339 }; |
333 |
340 |
457 $("#Profile1").hide(); |
464 $("#Profile1").hide(); |
458 $("#Profile2").hide(); |
465 $("#Profile2").hide(); |
459 $("#status_profile").html(''); |
466 $("#status_profile").html(''); |
460 } |
467 } |
461 |
468 |
462 $("#gaugeContainer_air").jqxGauge( { caption: { value: 'Air: '+record.air_temperature.toFixed(3) }}); |
469 yl = record.yeast_lo; |
|
470 yh = record.yeast_hi; |
|
471 var range = { ranges: [{ startValue: 0, endValue: yl, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, |
|
472 { startValue: yl, endValue: yh, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, |
|
473 { startValue: yh, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }] }; |
|
474 $("#gaugeContainer_air").jqxGauge( range ); |
|
475 $("#gaugeContainer_beer").jqxGauge( range ); |
|
476 |
|
477 $("#gaugeContainer_air").jqxGauge({ caption: { value: 'Air: '+record.air_temperature.toFixed(3) }}); |
463 $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); |
478 $('#gaugeContainer_air').jqxGauge({ value: record.air_temperature }); |
464 if (record.air_state == "OK") { |
479 if (record.air_state == "OK") { |
465 $("#gaugeContainer_air").jqxGauge({ disabled: false }); |
480 $("#gaugeContainer_air").jqxGauge({ disabled: false }); |
466 } else { |
481 } else { |
467 $("#gaugeContainer_air").jqxGauge({ disabled: true }); |
482 $("#gaugeContainer_air").jqxGauge({ disabled: true }); |
468 } |
483 } |
469 $("#gaugeContainer_beer").jqxGauge( { caption: { value: 'Beer: '+record.beer_temperature.toFixed(3) }}); |
484 $("#gaugeContainer_beer").jqxGauge({ caption: { value: 'Beer: '+record.beer_temperature.toFixed(3) }}); |
470 $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); |
485 $('#gaugeContainer_beer').jqxGauge({ value: record.beer_temperature }); |
471 if (record.beer_state == "OK") { |
486 if (record.beer_state == "OK") { |
472 $("#gaugeContainer_beer").jqxGauge({ disabled: false }); |
487 $("#gaugeContainer_beer").jqxGauge({ disabled: false }); |
473 } else { |
488 } else { |
474 $("#gaugeContainer_beer").jqxGauge({ disabled: true }); |
489 $("#gaugeContainer_beer").jqxGauge({ disabled: true }); |
495 sendSwitch(record.heater_state, record.cooler_state, record.fan_state, record.light_state); |
510 sendSwitch(record.heater_state, record.cooler_state, record.fan_state, record.light_state); |
496 newSwitch = false; |
511 newSwitch = false; |
497 skip = true; |
512 skip = true; |
498 } |
513 } |
499 if (newProduct) { |
514 if (newProduct) { |
500 sendProduct(record.beercode, record.beername, record.beeruuid); |
515 sendProduct(record.beercode, record.beername, record.beeruuid, record.yeast_lo, record.yeast_hi); |
501 newProduct = false; |
516 newProduct = false; |
502 skip = true; |
517 skip = true; |
503 } |
518 } |
504 if (newProfile) { |
519 if (newProfile) { |
505 sendProfile(ppayload); |
520 sendProfile(ppayload); |
535 var index = event.args.index; |
550 var index = event.args.index; |
536 var datarecord = productlist.records[index]; |
551 var datarecord = productlist.records[index]; |
537 record.beercode = datarecord.code; |
552 record.beercode = datarecord.code; |
538 record.beername = datarecord.name; |
553 record.beername = datarecord.name; |
539 record.beeruuid = datarecord.uuid; |
554 record.beeruuid = datarecord.uuid; |
|
555 record.yeast_lo = datarecord.yeast_lo; |
|
556 record.yeast_hi = datarecord.yeast_hi; |
540 newProduct = true; |
557 newProduct = true; |
541 } |
558 } |
542 }); |
559 }); |
543 $("#select_profile").on('select', function (event) { |
560 $("#select_profile").on('select', function (event) { |
544 if (event.args) { |
561 if (event.args) { |