www/js/mon_co2meter.js

Fri, 11 Oct 2019 13:38:31 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 11 Oct 2019 13:38:31 +0200
changeset 505
c09b67fd8323
parent 503
b23ef14c6b09
child 506
8ab0e87d579e
permissions
-rw-r--r--

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);
	});
});

mercurial