Thu, 18 Apr 2024 14:20:19 +0200
Devices list grid added.
/***************************************************************************** * 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 source = { datatype: 'json', cache: false, datafields: [ { name: 'uuid', type: 'string' }, { name: 'type', type: 'string' }, { name: 'address', type: 'string' }, { name: 'subdevice', type: 'int' }, { name: 'inuse', type: 'int' }, { name: 'description', type: 'string' }, { name: 'direction', type: 'string' }, { name: 'value', type: 'int' }, { name: 'timestamp', type: 'int' } ], id: 'uuid', url: 'getdevices.php' }, dataAdapter = new $.jqx.dataAdapter(source); // initialize jqxGrid $('#jqxgrid').jqxGrid({ width: 1280, height: 630, source: dataAdapter, theme: theme, columns: [ { text: 'Address', datafield: 'address', width: 200 }, { text: 'Subdevice', datafield: 'subdevice', width: 100 }, { text: 'Direction', datafield: 'direction', width: 120 }, { text: 'Value', datafield: 'value', width: 80 }, { text: 'Description', datafield: 'description' }, { text: 'Last change', datafield: 'timestamp', width: 200, cellsrenderer: function(index, datafield, value, defaultvalue, column, rowdata) { var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds var date = new Date((value * 1000) - tzoffset).toISOString().slice(0, 19).replace("T", " ");; return '<span style="margin: 3px; margin-top: 6px; float: left;">' + date + '</span>'; } }, { text: '', datafield: 'Edit', width: 100, align: 'center', columntype: 'button', cellsrenderer: function() { return 'Bekijk'; }, buttonclick: function(row) { var datarecord = dataAdapter.records[row]; window.location.href = 'edit_device.php?uuid=' + datarecord.uuid; } } ], }); websocket.onmessage = function(evt) { var msg = evt.data; var obj = JSON.parse(msg); if (obj.ping) { websocket.send('{"pong":' + obj.ping + '}'); } if (obj.type == 'device') { // Use the message to trigger update. $('#jqxgrid').jqxGrid('updatebounddata'); } } });