Fri, 11 Oct 2019 13:38:31 +0200
Added CO2 meter units alarm led.
/***************************************************************************** * Copyright (C) 2019 * * Michiel Broek <mbroek at mbse dot eu> * * This file is part of BMS * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * Brewery Management System istributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ThermFerm; see the file COPYING. If not, write to the Free * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *****************************************************************************/ $(document).ready(function () { var record = {}, blank = {}, // newBase = false, // newProduct = false, schedule = 0, productSource = { datatype: "json", cache: false, datafields: [ { name: 'code', type: 'string' }, { name: 'name', type: 'string' }, { name: 'uuid', type: 'string' } ], id: 'code', url: "includes/db_product.php?select=ferment" }, productlist = new $.jqx.dataAdapter(productSource, { beforeLoadComplete: function (records) { var row, i, data = new Array(); // Create a dummy beer on top to store in idle fermenters. blank['code'] = "Free"; // Will override this later. blank['name'] = 'Dummy'; blank['uuid'] = '66ecccbf-e942-4a35-af49-8b02314561a5'; data.push(blank); for (i = 0; i < records.length; i++) { row = records[i]; data.push(row); } return data; }, loadError: function(jqXHR, status, error) { $('#err').text(status + ' ' + error); }, }), gaugeoptionst = { min: 0, max: 40, width: 375, height: 375, ranges: [{ startValue: 0, endValue: 20, style: { fill: '#3399FF', stroke: '#3399FF' }, endWidth: 10, startWidth: 10 }, { startValue: 20, endValue: 26, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, { startValue: 26, endValue: 40, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], ticksMinor: { interval: 1, size: '5%' }, ticksMajor: { interval: 5, size: '9%' }, labels: { interval: 5 }, style: { fill: '#eeeeee', stroke: '#666666' }, value: 0, colorScheme: 'scheme05' }, gaugeoptionsp = { min: 0, max: 6, width: 375, height: 375, ranges: [{ startValue: 0, endValue: 3, style: { fill: '#00CC33', stroke: '#00CC33' }, endWidth: 10, startWidth: 10 }, { startValue: 3, endValue: 6, style: { fill: '#FC6A6A', stroke: '#FC6A6A' }, endWidth: 10, startWidth: 10 }], ticksMinor: { interval: 0.2, size: '5%' }, ticksMajor: { interval: 1, size: '9%' }, labels: { interval: 1 }, style: { fill: '#eeeeee', stroke: '#666666' }, value: 0, colorScheme: 'scheme05' }, url = "getco2meter.php?uuid='" + my_uuid + "'", source = { datatype: "json", datafields: [ { name: 'record', type: 'int' }, { name: 'uuid', type: 'string' }, { name: 'alias', type: 'string' }, { name: 'node', type: 'string' }, { name: 'online', type: 'int' }, { name: 'beercode', type: 'string' }, { name: 'beername', type: 'string' }, { name: 'beeruuid', type: 'string' }, { name: 'mode', type: 'string' }, { name: 'alarm', type: 'int' }, { name: 'temperature_state', type: 'string' }, { name: 'temperature', type: 'float' }, { name: 'pressure_state', type: 'string' }, { name: 'pressure_bar', type: 'float' } ], id: 'record', url: url }, dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function (records) { record = dataAdapter.records[0]; var oline = (record.online) ? "On-line" : "Off-line"; $("#info_uuid").html(record.uuid); $("#info_system").html(record.node + "/" + record.alias); $("#info_online").html(oline); $("#info_mode").jqxDropDownList('selectItem', record.mode); blank['name'] = record.alias; blank['code'] = record.alias.toUpperCase(); blank['uuid'] = record.uuid; if (record.online && (record.mode != "OFF")) { $("#co2meter_powerled").html('<div class="LEDblue_on"></div>Power'); } else { $("#co2meter_powerled").html('<div class="LEDblue_off"></div>Power'); } if (record.online && (record.alarm != "0")) { $("#co2meter_alarmled").html('<div class="LEDred_on"></div>Alarm'); } else { $("#co2meter_alarmled").html('<div class="LEDred_off"></div>Alarm'); } $("#gaugeContainer_temperature").jqxGauge({ caption: { value: 'Temp: '+record.temperature.toFixed(3) }}); $('#gaugeContainer_temperature').jqxGauge({ value: record.temperature }); if (record.temperature_state == "OK") { $("#gaugeContainer_temperature").jqxGauge({ disabled: false }); } else { $("#gaugeContainer_temperature").jqxGauge({ disabled: true }); } $("#gaugeContainer_pressure").jqxGauge({ caption: { value: 'Bar: '+record.pressure_bar.toFixed(2) }}); $('#gaugeContainer_pressure').jqxGauge({ value: record.pressure_bar }); if (record.pressure_state == "OK") { $("#gaugeContainer_pressure").jqxGauge({ disabled: false }); } else { $("#gaugeContainer_pressure").jqxGauge({ disabled: true }); } } }); $("#select_beer").jqxDropDownList({ placeHolder: "Kies bier:", theme: theme, source: productlist, displayMember: "code", width: 150, height: 24, dropDownWidth: 500, autoDropDownHeight: true, renderer: function (index, label, value) { var datarecord = productlist.records[index]; return datarecord.code + " - " + datarecord.name; } }); $("#gaugeContainer_temperature").jqxGauge( gaugeoptionst ); $("#gaugeContainer_temperature").jqxGauge( { caption: { value: 'Temp: 00.000' }} ); $("#gaugeContainer_pressure").jqxGauge( gaugeoptionsp ); $("#gaugeContainer_pressure").jqxGauge( { caption: { value: 'Bar: 00.000' }} ); srcMode = [ "OFF", "ON" ]; $("#info_mode").jqxDropDownList({ theme: theme, source: srcMode, width: 100, height: 24, dropDownHeight: 62 }); // function sendProduct(code, name, uuid, yeast_lo, yeast_hi) { // console.log("sendProduct("+code+", "+name+", "+uuid+", "+yeast_lo+", "+yeast_hi+")"); // var data = 'node='+record.node+'&alias='+record.alias+'&payload='; // data += '{"product":{"code":"'+code+'","name":"'+name+'","uuid":"'+uuid+'","yeast_lo":'+yeast_lo+',"yeast_hi":'+yeast_hi+'}}'; // $.ajax({ // url: "cmd_fermenter.php", // data: data, // type: "POST", // success: function(data) {}, // error: function(jqXHR, textStatus, errorThrown) { console.log("sendProduct() error"); } // }); // } // Get the data immediatly and then at regular intervals to refresh. dataAdapter.dataBind(); setInterval(function() { var skip = false; // if (newProduct) { // sendProduct(record.beercode, record.beername, record.beeruuid, record.yeast_lo, record.yeast_hi); // newProduct = false; // skip = true; // } if (skip) { schedule = 4; // 2 seconds wait to get the results } else { if (schedule > 0) schedule--; } if (schedule <= 0) { dataAdapter.dataBind(); schedule = 20; } }, 500); $('#info_mode').on('change', function (event) { var args = event.args; if (args) { record.mode = args.item.value; } // newBase = true; }); // $("#select_beer").on('select', function (event) { // if (event.args) { // var index = event.args.index, // datarecord = productlist.records[index]; // record.beercode = datarecord.code; // record.beername = datarecord.name; // record.beeruuid = datarecord.uuid; // record.yeast_lo = datarecord.yeast_lo; // record.yeast_hi = datarecord.yeast_hi; // newProduct = true; // } // }); // The chart button. $("#FLog").jqxButton({ template: "primary", width: '150px', theme: theme }); $("#FLog").click(function () { window.open('log_fermentation.php?code=' + record.beercode + '&name=' + record.beername); }); });