www/js/list_devices.js

Thu, 18 Apr 2024 14:20:19 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 18 Apr 2024 14:20:19 +0200
changeset 685
819553a2b97e
permissions
-rw-r--r--

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

mercurial