Logic Machine Forum
Add objects to Visu by Tag - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Visualization (https://forum.logicmachine.net/forumdisplay.php?fid=9)
+--- Thread: Add objects to Visu by Tag (/showthread.php?tid=4467)



Add objects to Visu by Tag - tomnord - 28.12.2022

Is it possible to auto fill a table (or similar) in visu by adding tags to objects?


RE: Add objects to Visu by Tag - admin - 28.12.2022

Can you provide a picture of what you want to achieve?


RE: Add objects to Visu by Tag - tomnord - 28.12.2022

(28.12.2022, 07:18)admin Wrote: Can you provide a picture of what you want to achieve?

I do not have a screenshot, but to explain more detailed: If I add a tag to a object, I would like for it to automaticly be added to visu. and show value + name. Like a excel spreadsheet of sorts.


RE: Add objects to Visu by Tag - admin - 28.12.2022

You can use .lp server-side script and iframe element to display a table. Upload via FTP using apps login to user directory as objects.lp
Then use /user/objects.lp as iframe source.
Code:
<?
require('apps')
objs = grp.tag('tag_name_here')
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Objects</title>
<link rel="stylesheet" href="/apps/css/bootstrap.css">
<link rel="stylesheet" href="/apps/css/font-awesome.css">
<link rel="stylesheet" href="/apps/css/style.css">
<script src="/apps/js/jquery.js.gz"></script>
</head>
<body>
<table class="table table-hover" style="margin-bottom:0">
  <thead>
    <tr>
      <th>Name</th>
      <th>Value</th>
      <th>Date</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>
<script>
var data = <?=json.encode(objs)?>;

// sort data by name
data.sort(function(a, b) {
  var na = a.name.toLowerCase()
     , nb = b.name.toLowerCase();

  if (na > nb) {
    return 1;
  }
  else if (na < nb) {
    return -1;
  }
  else {
    return 0;
  }
});

// show each object name/value/update time
$.each(data, function(index, item) {
  var trs = $('<tr><td></td><td></td><td></td></tr>').appendTo('tbody')
    , tds = trs.find('td')
    , d = new Date(item.updatetime * 1000);

  $(tds[ 0 ]).text(item.name);
  $(tds[ 1 ]).text(item.value);
  $(tds[ 2 ]).text(d.toString().split(' GMT')[0]);
});
</script>
</body>
</html>