www/js/mon_co2meter.js

changeset 503
b23ef14c6b09
child 505
c09b67fd8323
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/js/mon_co2meter.js	Thu Oct 10 22:19:29 2019 +0200
@@ -0,0 +1,224 @@
+/*****************************************************************************
+ * 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: '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');
+                        }
+
+                        $("#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