--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/js/set_global.js Mon Apr 22 20:58:55 2024 +0200 @@ -0,0 +1,160 @@ +/***************************************************************************** + * Copyright (C) 2024 + * + * Michiel Broek <mbroek at mbse dot eu> + * + * This file is part of mbsePi-apps + * + * 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. + * + * BrewCloud is distributed 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 global = {}, + globalSource = { + datatype: 'json', + cache: false, + datafields: [ + { name: 'type', type: 'string' }, + { name: 'name', type: 'string' }, + { name: 'uuid', type: 'string' }, + { name: 'node', type: 'string' }, + { name: 'os' }, + { name: 'os_version' }, + { name: 'FW' }, + { name: 'server_port', type: 'int' }, + { name: 'websocket_port', type: 'int' }, + { name: 'thb_temp_uuid', map: 'THB>temperature>uuid' }, + { name: 'temp_uuid', map: 'THB>temperature>uuid' }, + { name: 'temp_state', map: 'THB>temperature>state' }, + { name: 'temp_value', map: 'THB>temperature>value', type: 'int' }, + { name: 'hum_uuid', map: 'THB>humidity>uuid' }, + { name: 'hum_state', map: 'THB>humidity>state' }, + { name: 'hum_value', map: 'THB>humidity>value', type: 'int' }, + { name: 'temp_hum_idx', map: 'THB>index', type: 'int' }, + { name: 'lcd_address', map: 'LCD>address' }, + { name: 'lcd_cols', map: 'LCD>cols', type: 'int' }, + { name: 'lcd_rows', map: 'LCD>rows', type: 'int' }, + { name: 'mqtt_host', map: 'MQTT>host' }, + { name: 'mqtt_port', map: 'MQTT>port', type: 'int' }, + { name: 'mqtt_username', map: 'MQTT_username' }, + { name: 'mqtt_password', map: 'MQTT_password' } + ], + id: 'name', + url: 'getglobal.php' + }, + globalData = new $.jqx.dataAdapter(globalSource, { + loadComplete: function(records) { + global = globalData.records[0]; + updateScreen(); + } + }), + tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds + + function updateScreen() { + $('#name').val(global.name); + $('#uuid').val(global.uuid); + $('#node').val(global.node); + $('#os').val(global.os + ' ' + global.os_version); + $('#FW').val(global.FW); + $('#server_port').val(global.server_port); + $('#websocket_port').val(global.websocket_port); + $('#temp_uuid').val(global.temp_uuid); + $('#temp_state').val(global.temp_state); + $('#temp_value').val(global.temp_value / 1000.0); + $('#hum_uuid').val(global.hum_uuid); + $('#hum_state').val(global.hum_state); + $('#hum_value').val(global.hum_value / 1000.0); + $('#temp_hum_idx').val(global.temp_hum_idx); + $('#lcd_address').val(global.lcd_address); + $('#lcd_cols').val(global.lcd_cols); + $('#lcd_rows').val(global.lcd_rows) + $('#mqtt_host').val(global.mqtt_host); + $('#mqtt_port').val(global.mqtt_port); + $('#mqtt_username').val(global.mqtt_username); + $('#mqtt_password').val(global.mqtt_password); + } + + // initialize the input fields. + $('#name').jqxInput({ theme: theme, width: 240, height: 23 }); + $('#uuid').jqxInput({ theme: theme, width: 480, height: 23 }); + $('#node').jqxInput({ theme: theme, width: 240, height: 23 }); + $('#os').jqxInput({ theme: theme, width: 240, height: 23 }); + $('#FW').jqxInput({ theme: theme, width: 120, height: 23 }); + $('#server_port').jqxNumberInput(Spin0dec); + $('#websocket_port').jqxNumberInput(Spin0dec); + $('#temp_uuid').jqxDropDownList({ + theme: theme, + source: tempsensorlist, + valueMember: 'uuid', + displayMember: 'name', + width: 240, + dropDownWidth: 480, + autoDropDownHeight: true + }); + $('#temp_state').jqxInput({ theme: theme, width: 120, height: 23 }); + $('#temp_value').jqxNumberInput(Show1dec); + $('#hum_uuid').jqxDropDownList({ + theme: theme, + source: tempsensorlist, + valueMember: 'uuid', + displayMember: 'name', + width: 240, + dropDownWidth: 480, + autoDropDownHeight: true + }); + $('#hum_state').jqxInput({ theme: theme, width: 120, height: 23 }); + $('#hum_value').jqxNumberInput(Show1dec); + $('#temp_hum_idx').jqxNumberInput(Spin0dec); + + $('#lcd_address').jqxNumberInput(Spin0dec); + $('#lcd_cols').jqxNumberInput(GPIOInt); + $('#lcd_rows').jqxNumberInput(GPIOInt); + + $('#mqtt_host').jqxInput({ theme: theme, width: 240, height: 23 }); + $('#mqtt_port').jqxNumberInput(Spin0dec); + $('#mqtt_username').jqxInput({ theme: theme, width: 240, height: 23 }); + $('#mqtt_password').jqxInput({ theme: theme, width: 240, height: 23 }); + + globalData.dataBind(); + + + $('#Save').jqxButton({ template: 'success', width: '90px', theme: theme }); + $('#Save').click(function() { + var row, rowID = -1; + if (editrow >= 0) { + rowID = $('#jqxgrid').jqxGrid('getrowid', editrow); + } + row = { + uuid: dataRecord.uuid, + type: $('#type').val() + }; +// $('#jqxgrid').jqxGrid('updaterow', rowID, row); + }); + + websocket.onmessage = function(evt) { + var msg = evt.data; + var obj = JSON.parse(msg); + + if (obj.ping) { + websocket.send('{"pong":' + obj.ping + '}'); + } + + if (obj.type == 'global') { + // Use the message to trigger update. +// $('#jqxgrid').jqxGrid('updatebounddata'); + } + } +});