Procházet zdrojové kódy

Version 1.1.3

master
Vito Minchilli před 7 hodinami
rodič
revize
86acb79741
61 změnil soubory, kde provedl 32849 přidání a 663 odebrání
  1. +0
    -0
      Icon
  2. +4
    -0
      app.css
  3. +1
    -1
      app.html
  4. +105
    -21
      app.js
  5. +64
    -260
      app.json
  6. binární
      assets/.DS_Store
  7. +0
    -0
      assets/Icon
  8. +0
    -0
      assets/api/Icon
  9. +3
    -3
      assets/api/reslevis.api-1.0.5.json
  10. +0
    -0
      assets/fonts/Icon
  11. +0
    -0
      assets/fonts/Quicksand/Icon
  12. +0
    -0
      assets/fonts/Quicksand/static/Icon
  13. +0
    -0
      assets/fonts/Titillium_Web/Icon
  14. +0
    -0
      assets/images/Icon
  15. +72
    -0
      assets/images/logo-reslevis-white.svg
  16. +0
    -0
      assets/maps/Icon
  17. +1
    -1
      assets/maps/index.html
  18. +0
    -0
      assets/modules/Icon
  19. +109
    -0
      assets/modules/reslevis.config.json
  20. +0
    -14
      assets/modules/reslevis.data.json
  21. +0
    -0
      assets/plugins/Icon
  22. +0
    -0
      assets/plugins/tablestack/Icon
  23. +20
    -31
      assets/templates/Alarm.html
  24. +22
    -35
      assets/templates/Building.html
  25. +20
    -31
      assets/templates/Gateway.html
  26. +0
    -0
      assets/templates/Icon
  27. +4
    -6
      assets/templates/Info.html
  28. +33
    -22
      assets/templates/Menu.html
  29. +21
    -32
      assets/templates/Operator.html
  30. +27
    -6
      assets/templates/Setting.html
  31. +21
    -32
      assets/templates/Subject.html
  32. +2
    -2
      assets/templates/Text.html
  33. +21
    -32
      assets/templates/Track.html
  34. +21
    -32
      assets/templates/Tracker.html
  35. +22
    -33
      assets/templates/Zone.html
  36. +2
    -2
      assets/templates/fingerprint.html
  37. +20
    -31
      assets/templates/floor.html
  38. +4
    -4
      assets/templates/home.html
  39. +121
    -0
      assets/templates/menuleft.html
  40. +19
    -29
      assets/templates/trackerZone.html
  41. binární
      db/.DS_Store
  42. +0
    -0
      db/Icon
  43. +0
    -0
      db/presence/Icon
  44. +0
    -0
      db/reslevis/Icon
  45. +10
    -3
      db/reslevis/Setting.json
  46. +0
    -0
      db/reslevis/Track/Icon
  47. +22
    -0
      err.json
  48. binární
      jsonic/.DS_Store
  49. +0
    -0
      jsonic/Icon
  50. +0
    -0
      jsonic/images/Icon
  51. +0
    -0
      jsonic/images/flags/Icon
  52. +0
    -0
      jsonic/images/langs/Icon
  53. +0
    -0
      jsonic/js/Icon
  54. +16029
    -0
      jsonic/js/jsonic.1.0.13 copia.js
  55. +16029
    -0
      jsonic/js/jsonic.1.0.13.js
  56. +0
    -0
      jsonic/js/jsonic.1.0.14.js
  57. +0
    -0
      jsonic/modules/Icon
  58. +0
    -0
      jsonic/plugins/Icon
  59. binární
      uploads/.DS_Store
  60. +0
    -0
      uploads/Icon
  61. +0
    -0
      uploads/plans/Icon

+ 0
- 0
Icon Zobrazit soubor


+ 4
- 0
app.css Zobrazit soubor

@@ -1,3 +1,7 @@
.columnVisibility:last-child {
display: none;
}

/* FONT */

/* latin */


+ 1
- 1
app.html Zobrazit soubor

@@ -16,7 +16,7 @@

</head>

<body>
<body class="bg-white h-full">

<script type="text/javascript" src="jsonic/js/jsonic.min.js"></script>
<script>


+ 105
- 21
app.js Zobrazit soubor

@@ -41,8 +41,8 @@ var UI = {
apiPost: function (args) {
if (!args.db) { console.log('apiPost requires db parameter'); }
let methodName = this.apiMethodName(args);
let item = js.replaceProperties('{formDataToJson:.form'+args.db+'}');
let item = js.replaceProperties('{formDataToJson:.form' + args.db + '}');
console.log(item);
//window.args = args;
window[methodName](item)
@@ -63,6 +63,16 @@ var UI = {
.catch(function (err) {
console.log('apiCall error');
console.log(err);
let apiCallback = [
{
"rl:apiPostCallback": {
"db": args.db,
"template": args.template,
"data": err
}
}
];
js.callback({ do: apiCallback });
});
},

@@ -121,6 +131,37 @@ var UI = {
return String(val).charAt(0).toUpperCase() + String(val).slice(1);
},

getVisibleColumns: function (db) {
if (window.table && window.table[db]) {
const visibility = {};
window.table[db].table.getAllLeafColumns().forEach(column => {
visibility[column.id] = column.getIsVisible();
});
return visibility;
}
},

setVisibleColumns: function (db, columns) {
if (window.table && window.table[db]) {
const table = window.table[db].table;
const visibility = {};
const pinning = { left: [], right: [] };

for (const [id, val] of Object.entries(columns)) {
if (val === 'left' || val === 'right') {
visibility[id] = true;
pinning[val].push(id);
} else {
visibility[id] = !!val;
}
}

table.setColumnVisibility(visibility);
table.setColumnPinning(pinning);
window.table[db].render();
}
},

getToken: function (args) {
if (args.options.body && typeof args.options.body !== 'string') args.options.body = JSON.stringify(args.options.body);
fetch(args.url, args.options).then(response => response.json()).then(data => {
@@ -158,27 +199,24 @@ var UI = {
const label = prop.description || key;
const required = params.schema.required && params.schema.required.includes(key) ? 'required' : '';
const inputId = `input-${key}`; // Unique ID for accessibility
const hiddenId = (key == 'id' && jsonApp && jsonApp.json.data.settings && !jsonApp.json.data.settings.debug) ? ' hidden' : '';
// && jsonApp && jsonApp.json.data.settings &&
const hiddenId = ((key == 'id' || key == 'status') && !jsonApp.json.data.settings.debug) ? ' hidden' : '';

// Create fieldset for each field
const fieldsetChildren = [
{
"tag": "label",
"attr": {
"class": "label text-primary" + hiddenId,
"class": "label text-primary " + hiddenId,
"data-value": params.db + "/" + key,
"for": key
},
"html": [
{
tag: 'span',
text: label
}
]
text: label
}
];

console.log(fieldsetChildren);

// Handle different input types
let inputElement;
switch (prop.type) {
@@ -310,7 +348,7 @@ var UI = {
type: 'number',
value: (params.fields && params.fields[key]) ? params.fields[key] : false,
placeholder: prop.description || ' ',
class: 'field input w-full input-primary',
class: 'field input w-full input-primary' + hiddenId,
...(required && { required: '' })
}
};
@@ -324,7 +362,7 @@ var UI = {
"data-value": params.db + "/" + key,
"name": key,
type: 'checkbox',
class: 'field toggle toggle-info',
class: 'field toggle toggle-info' + hiddenId,
...(required && { required: '' })
}
};
@@ -340,7 +378,7 @@ var UI = {
"name": key,
value: (params.fields && params.fields[key]) ? params.fields[key] : false,
placeholder: prop.description || 'Enter values separated by commas',
class: 'field textarea w-full input-primary',
class: 'field textarea w-full input-primary' + hiddenId,
...(required && { required: '' })
}
};
@@ -354,7 +392,7 @@ var UI = {
"data-value": params.db + "/" + key,
"name": key,
placeholder: prop.description || 'Enter JSON object',
class: 'field textarea w-full input-primary',
class: 'field textarea w-full input-primary' + hiddenId,
...(required && { required: '' })
}
};
@@ -370,7 +408,7 @@ var UI = {
type: 'text',
value: (params.fields && params.fields[key]) ? params.fields[key] : false,
placeholder: prop.description || ' ',
class: 'field input w-full input-primary',
class: 'field input w-full input-primary' + hiddenId,
...(required && { required: '' })
}
};
@@ -433,6 +471,17 @@ var UI = {
appForm.selector = params.selector;
jsonApp.do(appForm);
},
columnsFromApi: function (db) {
let dbFields = js.json.data.api.components.schemas[params.db].properties;
let columns = [];
for (let key in dbFields) {
columns.push({
"header": key,
"accessorKey": key
});
}
return columns;
},
createTable: function (params) {

/* console.log('createTable');
@@ -461,7 +510,14 @@ var UI = {

let data = getTableData()
let version = 0
let columns = js.json.data.ui.pages[params.db].columns;
let columns = JSON.parse(JSON.stringify(js.json.data.preferences.tables[params.db].columns));

/*
let columns = this.columnsFromApi(params.db);
console.log('columns', JSON.stringify(columns));
let visibility = js.json.data.preferences.tables[params.db].columns;
console.log('visibility', JSON.stringify(visibility));
*/

const state = {
columnPinning: { left: [], right: [] },
@@ -495,7 +551,7 @@ var UI = {

if (!window.table) window.table = {};

window.table[params.db] = {
window.table[params.db] = Alpine.reactive({
dbId: params.db,
version,
columns,
@@ -614,7 +670,10 @@ var UI = {
return column.getIsVisible()
},
toggleColumn(column) {
column.toggleVisibility()
column.toggleVisibility();
/* let preferences = JSON.parse(localStorage.getItem("preferences"));
preferences.tables[this.dbId].columns = this.getVisibleColumns(this.dbId);
localStorage.setItem("preferences", JSON.stringify(preferences)); */
this.render()
},
toggleSelectedRow(row) {
@@ -648,7 +707,7 @@ var UI = {
this.version++
}

}
});

return window.table[params.db]
},
@@ -657,8 +716,33 @@ var UI = {
console.log('loadTemplate', params);
// add to html the parameters {url, to}
var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function () {
console.log('readyState', this.readyState, 'status', this.status);
//console.log(this);
if (this.readyState == 4 && this.status == 200) {
//console.log(this.responseText);
} else if (this.readyState == 4 && this.status == 401) {
// unauthenticated
window.location.reload();
} else {
if (this.status !== 0)
console.log('Error loading ' + params.url);
}
};

xmlhttp.open("GET", params.url, false);
xmlhttp.send();
xmlhttp.send();/* .then(function (data) {
console.log('loadTemplate success');
console.log(data);
//js.callback({ do: params.success });
}).catch((err) => {
console.log('loadTemplate error');
console.log(err);
window.location.reload();
//js.callback({ do: params.error });
}); */

if (xmlhttp.responseText) {
var responseText = xmlhttp.responseText;
if (params.arguments) {


+ 64
- 260
app.json Zobrazit soubor

@@ -4,258 +4,6 @@
"id": "",
"name": "",
"token": ""
},
"ui": {
"pages": {
"building": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "city",
"header": "City"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"floor": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "BuildingName",
"header": "Building"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"zone": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "BuildingName",
"header": "Building"
},
{
"accessorKey": "FloorName",
"header": "Floor"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"operator": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "buildingName",
"header": "Building"
},
{
"accessorKey": "floorName",
"header": "Floor"
},
{
"accessorKey": "zones",
"header": "Zones"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"subject": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "buildingName",
"header": "Building"
},
{
"accessorKey": "floorName",
"header": "Floor"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"home": {
"columns": [
{
"accessorKey": "timestamp",
"header": "Time"
},
{
"accessorKey": "subjectName",
"header": "Subject"
},
{
"accessorKey": "status",
"header": "Status"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"alarm": {
"columns": [
{
"accessorKey": "timestamp",
"header": "Time"
},
{
"accessorKey": "subjectName",
"header": "Subject"
},
{
"accessorKey": "status",
"header": "Status"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"gateway": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "status",
"header": "Status"
},
{
"accessorKey": "model",
"header": "Model"
},
{
"accessorKey": "ip",
"header": "IP"
},
{
"accessorKey": "position",
"header": "Position"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"tracker": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "status",
"header": "Status"
},
{
"accessorKey": "model",
"header": "Model"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"trackerZone": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "days",
"header": "Days"
},
{
"accessorKey": "hours",
"header": "Hours"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"track": {
"columns": [
{
"accessorKey": "timestamp",
"header": "Time"
},
{
"accessorKey": "subject",
"header": "Subject"
},
{
"accessorKey": "gateway",
"header": "Gateway"
},
{
"accessorKey": "status",
"header": "Status"
},
{
"accessorKey": "signal",
"header": "Signal"
},
{
"accessorKey": "actions",
"header": ""
}
]
},
"setting": {
"columns": [
{
"accessorKey": "name",
"header": "Name"
},
{
"accessorKey": "role",
"header": "Role"
},
{
"accessorKey": "actions",
"header": ""
}
]
}
}
}
},
"on": {
@@ -272,6 +20,25 @@
}
],
"init": [
{
"if": {
"is": "{local:preferences}",
"then": [
{
"set": {
"data preferences": "{local:preferences}"
}
}
],
"else": [
{
"local set": {
"preferences": "{data preferences}"
}
}
]
}
},
{
"set": {
"var saveMethod": "POST"
@@ -494,6 +261,10 @@
"language": "en",
"log": false,
"modules": [
{
"name": "reslevisData",
"url": "assets/modules/reslevis.config.json"
},
{
"name": "reslevisIcons",
"url": "assets/modules/reslevis.icons.json"
@@ -610,6 +381,7 @@
"tracker",
"trackerZone",
"track",
"fingerprint",
"setting"
],
"do": [
@@ -844,12 +616,7 @@
"do": [
{
"set": {
"var dbUrl": [
"{data api servers {arguments:localDb} url}/get{arguments:db}s",
"{arguments:localPath}/{arguments:db}.json"
],
"var infoText": "{texts info{arguments:db}s}",
"var token": "{data user token}"
"var infoText": "{texts info{arguments:db}s}"
}
},
{
@@ -858,7 +625,7 @@
{
"fetchJson": {
"to": "var getResult",
"url": "{var dbUrl {arguments:localDb}}",
"url": "{arguments:localPath}/{arguments:db}.json",
"options": {
"method": "GET",
"headers": {
@@ -903,6 +670,27 @@
"openPage": {
"arguments": "(page, path)",
"do": [
{
"if2": {
"is": "'{arguments:page}' === 'home'",
"then": [
{
"attr": {
"selector": ".menuleft",
"addClass": "hidden"
}
}
],
"else": [
{
"attr": {
"selector": ".menuleft",
"removeClass": "hidden"
}
}
]
}
},
{
"if": {
"is": "'{arguments:page}' === ''",
@@ -1201,7 +989,14 @@
"selector": "body",
"tag": "div",
"attr": {
"class": "main w-full h-screen"
"class": "menuleft float-left w-[200px] hidden lg:block"
}
},
{
"selector": "body",
"tag": "div",
"attr": {
"class": "main h-screen h-full"
},
"comment": [
{
@@ -1294,6 +1089,15 @@
]
}
]
},
{
"loadTemplate": {
"selector": ".menuleft",
"url": "./assets/templates/menuleft.html",
"to": "template menuleft",
"arguments": {},
"callback": []
}
}
]
}


binární
assets/.DS_Store Zobrazit soubor


+ 0
- 0
assets/Icon Zobrazit soubor


+ 0
- 0
assets/api/Icon Zobrazit soubor


+ 3
- 3
assets/api/reslevis.api-1.0.5.json Zobrazit soubor

@@ -1918,15 +1918,15 @@
},
"temperature": {
"type": "string",
"description": "Battery"
"description": "Temperature"
},
"acceleration": {
"type": "string",
"description": "Battery"
"description": "Acceleration"
},
"heartRate": {
"type": "string",
"description": "Battery"
"description": "HeartRate"
},
"building": {
"type": "string",


+ 0
- 0
assets/fonts/Icon Zobrazit soubor


+ 0
- 0
assets/fonts/Quicksand/Icon Zobrazit soubor


+ 0
- 0
assets/fonts/Quicksand/static/Icon Zobrazit soubor


+ 0
- 0
assets/fonts/Titillium_Web/Icon Zobrazit soubor


+ 0
- 0
assets/images/Icon Zobrazit soubor


+ 72
- 0
assets/images/logo-reslevis-white.svg Zobrazit soubor

@@ -0,0 +1,72 @@

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="none" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500">
<defs>
<g id="Layer0_0_FILL">
<path fill="#ffffff" stroke="none" d="
M 282.5 221.65
L 271.5 221.65 250 278.3 228.5 221.65 217.5 221.65 244.55 292.75 244.55 292.8 250.1 307 282.5 221.65
M 250.05 316.9
L 250.05 316.95 250.1 316.95 250.05 316.9
M 211.5 214.05
L 211.5 204.7 172.55 204.7 172.55 289.45 211.5 289.45 211.5 280.15 184.1 280.15 184.1 251.2 205.3 251.2 205.3 242.25 184.1 242.25 184.1 214.05 211.5 214.05
M 304.8 204.7
L 293.25 204.7 293.25 289.45 304.8 289.45 304.8 204.7
M 161.8 279.85
L 130.45 279.85 130.45 204.7 118.9 204.7 118.9 289.45 161.8 289.45 161.8 279.85
M 242.5 161
L 242.5 132.8 269.85 132.8 269.85 123.45 230.95 123.45 230.95 208.2 269.85 208.2 269.85 198.9 242.5 198.9 242.5 169.95 263.65 169.95 263.65 161 242.5 161
M 213.2 121.5
Q 211.35 117.1 207.55 114.05 203.75 111 197.95 109.4 192.15 107.75 184 107.75
L 160.05 107.75 160.05 192.5 171.5 192.5 171.5 157.2 180.2 157.2
Q 182.6 157.2 183.7 157.75 184.9 158.4 185.95 159.8
L 207.95 190.1
Q 209.4 192.5 212.55 192.5
L 222.7 192.5 197.95 158.85
Q 196.3 156.45 194.25 155.25 199.05 154.05 203.05 151.95 206.9 149.8 209.5 146.65 212.3 143.5 213.65 139.65 215.05 135.75 215.05 131.2 215.05 125.85 213.2 121.5
M 203.85 132.05
Q 203.85 135.75 202.55 138.8 201.3 141.95 198.8 144.15 196.1 146.4 192.3 147.6 188.5 148.8 183.55 148.8
L 171.5 148.8 171.5 116.8 184 116.8
Q 193.9 116.8 198.85 120.7 203.85 124.5 203.85 132.05
M 358.8 216.55
L 359.95 217.3 369.4 212.1
Q 365.2 208.1 359.7 206 353.8 203.8 346.75 203.8 340.4 203.8 335.5 205.7 330.6 207.65 327.35 210.9 323.95 214.15 322.25 218.4 320.5 222.55 320.5 227.05 320.5 232.7 322.25 236.5 323.95 240.3 326.8 242.9 329.65 245.35 333.35 247.05
L 348.25 252.1
Q 351.85 253.3 354.7 255 357.6 256.65 359.25 259.05 361 261.55 361 265.35 361 268.95 359.9 271.7 358.6 274.6 356.45 276.6 354.25 278.65 351 279.75 347.85 280.95 343.7 280.95 338.8 280.95 335.4 279.55
L 329.65 276.6 326.35 274.1 316.8 279.4
Q 321.6 284.45 328.45 287.45 335.2 290.4 343.35 290.4 350.2 290.4 355.45 288.35 360.7 286.3 364.35 282.6 368.05 279.1 369.9 274.1 371.8 269.3 371.8 263.75 371.8 258.4 370.05 254.9 368.3 251.3 365.45 248.7 362.55 246.3 358.95 244.65
L 344 239.2
Q 340.4 238 337.5 236.3 334.65 234.75 332.9 232.35 331.15 230.05 331.15 226.45 331.15 223.65 332.15 221.35 333.2 218.85 335.1 217.2 337.15 215.35 340.1 214.3 343.05 213.3 346.95 213.3 350.9 213.3 353.9 214.25
L 358.8 216.55
M 399.55 227.05
L 389.95 232.35 455.75 268.5 249.9 381.7 44.15 268.55 99.05 238.35 89.4 233.1 25 268.55 249.9 392.25 475 268.5 399.55 227.05
M 330.95 116.9
L 331.1 116.55
Q 326.75 112.2 320.9 109.95 315 107.75 308 107.75 301.6 107.75 296.7 109.7 291.8 111.65 288.55 114.85 285.15 118.1 283.5 122.35 281.7 126.5 281.7 131.05 281.7 136.7 283.5 140.45 285.15 144.25 288 146.85 290.9 149.35 294.55 151
L 309.45 156.1
Q 313.05 157.3 315.95 158.95 318.8 160.6 320.45 163 322.2 165.5 322.2 169.3 322.2 172.9 321.1 175.7 319.8 178.55 317.7 180.6 315.45 182.6 312.25 183.7 309.1 184.95 304.95 184.95 300.05 184.95 296.6 183.55
L 290.9 180.6 287.55 178.1 278.05 183.35
Q 282.85 188.45 289.65 191.4 296.4 194.35 304.55 194.35 311.4 194.35 316.65 192.3 321.95 190.3 325.55 186.6 329.25 183.1 331.1 178.1 333.05 173.3 333.05 167.75 333.05 162.35 331.25 158.85 329.5 155.25 326.65 152.65 323.8 150.25 320.2 148.6
L 305.2 143.15
Q 301.6 141.95 298.75 140.3 295.85 138.7 294.1 136.3 292.35 134 292.35 130.4 292.35 127.6 293.35 125.3 294.4 122.8 296.35 121.15 298.35 119.3 301.3 118.3 304.3 117.25 308.15 117.25 312.15 117.25 315.1 118.2
L 320 120.5 322.05 121.85 330.95 116.9 Z"/>
</g>

<g id="Layer0_1_FILL">
<path fill="#008EED" stroke="none" d="
M 235.35 319.5
Q 228.75 323.5 228.95 328.5 228.8 332.6 232.7 335.85 233.8 336.75 235.35 337.65 241.6 340.85 250 340.85 258.55 340.85 264.5 337.65 266.1 336.75 267.25 335.85 271.25 332.6 271.05 328.5 271.25 323.5 264.5 319.5 260.7 317.4 255.8 316.65 253.05 316.25 250 316.25 247 316.25 244.25 316.65 239.35 317.4 235.35 319.5
M 239.7 335.85
Q 238.3 335.3 237 334.65 232.45 331.95 232.35 328.5 232.45 325.15 237.05 322.4 242.45 319.55 250 319.55 257.55 319.55 262.85 322.45 267.55 325.15 267.75 328.5 267.55 331.95 262.85 334.65 261.65 335.3 260.3 335.85 255.8 337.45 250 337.45 244.2 337.45 239.7 335.85
M 257.05 328.5
Q 257.05 326.9 254.95 325.75 252.9 324.7 250 324.7 247.1 324.7 245 325.75 242.9 326.9 242.9 328.5 242.9 330.2 245 331.3 247.1 332.4 250 332.4 252.9 332.4 254.95 331.3 257.05 330.2 257.05 328.5 Z"/>
</g>
</defs>

<g transform="matrix( 1, 0, 0, 1, 0,0) ">
<use xlink:href="#Layer0_0_FILL"/>
</g>

<g transform="matrix( 1.39996337890625, 0, 0, 1.39996337890625, -99.95,-127) ">
<use xlink:href="#Layer0_1_FILL"/>
</g>
</svg>

+ 0
- 0
assets/maps/Icon Zobrazit soubor


+ 1
- 1
assets/maps/index.html Zobrazit soubor

@@ -25,7 +25,7 @@

<body class="p-6 font-sans">

<div class=" w-full flex align-items-center justify-content-center text-center justify-between">
<div class="flex align-items-center justify-content-center text-center justify-between">
<!-- Floor Selector -->
<select id="floor-select" class="select select-bordered border-[#008EED] select-primary w-full max-w-xs">
<option value="0" selected>Floor 0</option>


+ 0
- 0
assets/modules/Icon Zobrazit soubor


+ 109
- 0
assets/modules/reslevis.config.json Zobrazit soubor

@@ -0,0 +1,109 @@
{
"data": {
"settings": {
"version": "1.1.3",
"debug": false,
"unit": 1,
"authRequired": false,
"localDb": "0",
"localWebhook": "",
"localWebhookPlayground": "",
"localPath": "db/reslevis",
"serverUrl": "https://10.251.0.30:5050/frontend/api/reslevis",
"serverTokenUrl": "",
"serverClientSecret": "",
"updateInterval": 50000
},
"preferences": {
"tables": {
"building": {
"columns": {
"name": true,
"city": true,
"address": true
}
},
"floor": {
"columns": {
"name": true,
"BuildingName": true
}
},
"zone": {
"columns": {
"name": true,
"BuildingName": true,
"FloorName": true
}
},
"operator": {
"columns": {
"name": true,
"buildingName": true,
"floorName": true,
"zones": true
}
},
"subject": {
"columns": {
"name": true,
"buildingName": true,
"floorName": true
}
},
"home": {
"columns": {
"timestamp": true,
"subjectName": true,
"status": true
}
},
"alarm": {
"columns": {
"timestamp": true,
"subjectName": true,
"status": true
}
},
"gateway": {
"columns": {
"name": false,
"status": true,
"model": true,
"ip": true,
"position": true
}
},
"tracker": {
"columns": {
"name": true,
"status": true,
"model": true
}
},
"trackerZone": {
"columns": {
"name": true,
"days": true,
"hours": true
}
},
"track": {
"columns": {
"timestamp": true,
"subject": true,
"gateway": true,
"status": true,
"signal": true
}
},
"setting": {
"columns": {
"name": true,
"role": true
}
}
}
}
}
}

+ 0
- 14
assets/modules/reslevis.data.json Zobrazit soubor

@@ -1,19 +1,5 @@
{
"data": {
"settings": {
"version": "1.1.2",
"debug": true,
"unit": 1,
"authRequired": false,
"localDb": "1",
"localWebhook": "",
"localWebhookPlayground": "",
"localPath": "db/reslevis",
"serverUrl": "https://10.251.0.30:5050/frontend/api/reslevis",
"serverTokenUrl": "",
"serverClientSecret": "",
"updateInterval": 50000
},
"db": {}
}
}

+ 0
- 0
assets/plugins/Icon Zobrazit soubor


+ 0
- 0
assets/plugins/tablestack/Icon Zobrazit soubor


+ 20
- 31
assets/templates/Alarm.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -14,37 +14,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -76,10 +66,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -234,7 +223,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 22
- 35
assets/templates/Building.html Zobrazit soubor

@@ -1,6 +1,6 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">
<div class="border-base-200 flex items-center justify-between px-5 space-x-3">

<div>
<span class="text-2xl text-[#008EED] leading-[80px] capitalize">{arguments:db}s</span>
@@ -14,37 +14,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -76,10 +66,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class="mb-[30px] overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -177,9 +166,7 @@
</div>
</template>

<template x-if="cell.column.id === 'city'">
<span class="text-base font-medium" x-text="cell.row.original.city"></span>
</template>


<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
@@ -219,7 +206,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 20
- 31
assets/templates/Gateway.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="table{arguments:db} h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="table{arguments:db} h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

<div>
@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class="mb-[30px] overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -237,7 +226,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 0
- 0
assets/templates/Icon Zobrazit soubor


+ 4
- 6
assets/templates/Info.html Zobrazit soubor

@@ -1,9 +1,7 @@
<div class="h-full xl:min-w-0">

<div class="h-full lg:min-w-full xl:min-w-0">
<h1>RES LEVIS</h1>
<h1>RES LEVIS</h1>

<p>Information</p>

</div>
<p>Information</p>

</div>

+ 33
- 22
assets/templates/Menu.html Zobrazit soubor

@@ -1,40 +1,51 @@
<div class="header w-full flex align-items-center justify-content-center text-center justify-between">
<div class="header sticky top-0 left-0 z-50">
<div class="w-full flex align-items-center justify-content-center text-center justify-between bg-[#fff]">
<div class="text-center">

<label class="myDrawerButton pointer" for="my-drawer" aria-label="open sidebar"
class="btn btn-square btn-ghost lg:hidden ">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:menu"
class="iconify text-[60px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-28.55 19.6q.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05m57.1-20.65q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45Q28.9947.616 29 0q-.0053-.616-.45-1.05m0-18.55q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05Z">
</path>
</svg>
</label>
</div>

<div class="logo m-[10px]">
<div class="w-[120px] float-left"><a href="#home"><img class="" src="./assets/images/logo-reslevis.svg"></a>
<div class="logo">
<div class="m-0 p-0 w-[80px] float-right"><a href="#home"><img class=""
src="./assets/images/logo-reslevis.svg"></a>
</div>
</div>
</div>

<div role="alert" class="alert alert-info alert-soft hidden sm:flex h-[60px] my-auto">

<div class="p-[20px] text-center">


</div>

</div>
</div>
<div role="alert" class="alert alert-info alert-soft h-[60px] w-full my-auto text-center rounded-none">
<div class="flex align-items-center justify-content-center gap-2 mx-auto">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
class="stroke-info h-6 w-6 shrink-0 stroke-[#008EED]">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
<span class="text-[#008EED] infoText" js-data="texts tables info">Sustainable integrated nearby low energy
<span class="text-[#008EED] infoText" js-data="texts tables info">Sustainable integrated nearby low
energy
networks and services</span>
</div>

<div class="p-[20px] text-center">

<label for="my-drawer" aria-label="open sidebar" class="btn btn-square btn-ghost">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:menu"
class="iconify text-[60px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-28.55 19.6q.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05m57.1-20.65q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45Q28.9947.616 29 0q-.0053-.616-.45-1.05m0-18.55q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05Z">
</path>
</svg>
</label>
</div>

</div>


<div class="drawer drawer-end">
<div class="drawer drawer-start">
<input id="my-drawer" type="checkbox" class="drawer-toggle" />

<div class="drawer-side">
<div class=" drawer-side">
<label for="my-drawer" aria-label="close sidebar" class="drawer-overlay"></label>

<div class="w-[200px] p-[20px] h-[100vh] overflow-y-scroll bg-white">


+ 21
- 32
assets/templates/Operator.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility" :data-column="column.id">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class="overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -183,7 +172,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
<!-- <button
aria-label="Show"
class="btn btn-soft btn-xs btn-square"
@@ -218,7 +207,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 27
- 6
assets/templates/Setting.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,6 +13,28 @@
placeholder="Search" />
</label>

<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--ellipsis-vertical size-4"></span>
@@ -43,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -146,7 +167,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
</div>
</template>

@@ -166,7 +187,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 21
- 32
assets/templates/Subject.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class="columnsDropdown overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -183,7 +172,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
<!-- <button
aria-label="Show"
class="btn btn-soft btn-xs btn-square"
@@ -218,7 +207,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 2
- 2
assets/templates/Text.html Zobrazit soubor

@@ -13,7 +13,7 @@
placeholder="Search" />
</label>

<div class="dropdown dropdown-bottom dropdown-end">
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--ellipsis-vertical size-4"></span>
</div>
@@ -138,7 +138,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
</div>
</template>



+ 21
- 32
assets/templates/Track.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -205,7 +194,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
</div>
</template>

@@ -226,7 +215,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 21
- 32
assets/templates/Tracker.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -202,7 +191,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
<!-- <button
aria-label="Show"
class="btn btn-soft btn-xs btn-square"
@@ -237,7 +226,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 22
- 33
assets/templates/Zone.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -55,7 +45,7 @@
<li class="update{arguments:db}" @click="updateData()">
<div>
<span class="iconify lucide--refresh-cw size-4"></span>
Refresh Data
Refresh
</div>
</li>
<li>
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -183,7 +172,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
<!-- <button
aria-label="Show"
class="btn btn-soft btn-xs btn-square"
@@ -218,7 +207,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 2
- 2
assets/templates/fingerprint.html Zobrazit soubor

@@ -1,6 +1,6 @@
<div class="h-full w-full">
<div class="h-full">

<iframe src="assets/maps/" width="100%" height="100%" class="h-[calc(100vh-170px)]">
<iframe src="assets/maps/" class="w-[calc(100vw-250px)] h-[calc(100vh-170px)]" class=" h-[calc(100vh-170px)]">
</iframe>

</div>

+ 20
- 31
assets/templates/floor.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,10 +65,9 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
<div class=" overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">

<div
class="min-w-[480px] px-[20px] py-[20px] border-base-200 flex flex-wrap items-center justify-between gap-2">
@@ -218,7 +207,7 @@
</div>

<div
class="post min-w-[400px] max-w-[600px] max-h-[calc(100vh-260px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
class="post min-w-[400px] max-w-[600px] border-solid border-1 border-[#008EED] rounded-none post{arguments:id} ml-[30px] mb-[30px] hidden">
</div>

</div>


+ 4
- 4
assets/templates/home.html Zobrazit soubor

@@ -1,7 +1,7 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="mt-[30px] xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">


<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class="hidden lg:block mr-[30px] max-w-[400px] h-[calc(100vh-170px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
@@ -118,7 +118,7 @@
<div
class="dashboard w-full min-w-[400px] h-[calc(100vh-170px)] overflow-y-scroll border-solid border-1 border-[#008EED] rounded-none mb-[30px] ">

<div class="w-full cursor-pointer p-2">
<!-- <div class="w-full cursor-pointer p-2">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:menu"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
@@ -126,7 +126,7 @@
d="M-28.55 19.6q.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05m57.1-20.65q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45Q28.9947.616 29 0q-.0053-.616-.45-1.05m0-18.55q-.434-.4447-1.05-.45h-55q-.616.0053-1.05.45-.4447.434-.45 1.05.0053.616.45 1.05.434.4447 1.05.45h55q.616-.0053 1.05-.45.4447-.434.45-1.05-.0053-.616-.45-1.05Z">
</path>
</svg><span class="text-[#008EED] text-[18px] px-[0px] py-[10px]">Index</span>
</div>
</div> -->

<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 p-1">



+ 121
- 0
assets/templates/menuleft.html Zobrazit soubor

@@ -0,0 +1,121 @@
<div class="w-[200px] p-[20px] h-[100vh] bg-white">


<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#building"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:buildings"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M24.3 32v-64h-48.6v64h48.6m-2.45-61.55v59.1h-43.7v-59.1h43.7m-36.15 40.7v11.7h11.7v-11.7h-11.7m2.45 9.2V13.6h6.75v6.75h-6.75M-2.6-5.5h-11.7V6.2h11.7V-5.5m-9.25 2.45h6.75V3.7h-6.75v-6.75m-2.45-8.1h11.7v-11.7h-11.7v11.7m9.2-9.25v6.75h-6.75v-6.75h6.75m7.75 31.55v11.7h11.7v-11.7H2.65m2.45 9.2V13.6h6.75v6.75H5.1M14.35-5.5H2.65V6.2h11.7V-5.5M5.1-3.05h6.75V3.7H5.1v-6.75m-2.45-8.1h11.7v-11.7H2.65v11.7m9.2-9.25v6.75H5.1v-6.75h6.75Z">
</path>
</svg></a><a href="#building"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Buildings</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#floor"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:floors"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M14.7-13.95V-14l-2.15-1.2-.05.05L0-22l-12.45 6.85-.05-.05-2.15 1.2v.05l-4.6 2.5h-.05L-40-.05v.1l20.7 11.4h.05L0 22l17.7-9.7h.05l7.65-4.25h.05L40 .05 39.95 0 40-.05 25.4-8.1l-.05.05-7.6-4.25h-.05l-3-1.65M12.9-1.2 2.25-7.1l10.25-5.65 10.65 5.9L12.9-1.2m-2.6-12.75L.05-8.3l-10.3-5.65L0-19.65l10.3 5.7m-22.75 1.2 10.3 5.65-10.7 5.9-10.25-5.7 10.65-5.85m6.4 10.2H-6l6.05-3.3L10.7 0 .05 5.9-10.65 0l4.6-2.55m-.75 7.1h.05l4.6 2.55-10.3 5.65-10.7-5.85 10.3-5.7 6.05 3.35m-18.55 1.1L-35.65 0l10.35-5.65L-15.05 0l-10.3 5.65m61-5.65-10.3 5.65L15.1 0l10.25-5.65L35.65 0M2.25 7.1 6.8 4.55h.05L12.9 1.2l10.35 5.65-10.7 5.9L2.25 7.1m8.1 6.85L0 19.65l-10.3-5.7L.05 8.3l10.3 5.65Z">
</path>
</svg></a><a href="#floor"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Floors</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#zone"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:zones"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="m25.45-8.05-7.7-4.25v.05L.05-22l-17.75 9.75v-.05l-1.5.85h-.05L-40-.05l.05.05-.05.05 20.75 11.35h.05L.05 21.95l25.4-13.9h.05l14.5-8v-.1l-14.5-8h-.05M.05-19.6l11.4 6.25h-.05L35.7 0 11.4 13.35h.05L.05 19.6-17 10.2.9.35l9.2 5.05 2.2-1.2-20-11-2.2 1.2 8.65 4.8L-19.2 9l-16.4-9L.05-19.6Z">
</path>
</svg></a><a href="#zone"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Zones</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#operator"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:operators"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-24.9-9.1v-.05q2.3-1.65 5.05-1.65 2.85 0 5 1.65l.05.05q.35.25.65.55v-2.65q-2.55-1.7-5.7-1.7-3.55 0-6.3 2.15-3 2.45-3 5.65V-3.45q.1.8.35 1.35-.75 1.25-.75 2.65 0 1.75 1.2 3.45.75 3.2 2.75 6.25.25.95.2 1.8v.1q-.1 1.35-.95 2.3-4.5 1.25-8.4 5.3-.25.4-.25.8t.35.75q.2.2.7.2.45 0 .7-.2 3.6-3.8 7.75-4.9.15-.15.45-.35 1.5-1.55 1.7-3.85.1-1.2-.25-2.7-.05-.15-.2-.35-1.9-2.8-2.6-5.8-.05-.3-.15-.45-.9-1.1-.9-2.35 0-1.05.65-2.1.15-.2.15-.45 0-.3-.1-.55Q-27-3-27.1-3.6v-1.5q.1-2.25 2.2-4m41.35-1q1.55-.7 3.35-.7 1.05 0 2 .2 1.65.35 3.1 1.45v.05q2.15 1.75 2.2 4v1.5q-.1.6-.3 1.05-.15.25-.15.55 0 .25.15.45.7 1.05.7 2.1 0 1.25-.95 2.35-.1.15-.15.45-.65 3-2.6 5.8-.15.2-.15.35-.35 1.5-.3 2.7.2 2.3 1.7 3.85.3.2.5.35 4.1 1.1 7.75 4.9.2.2.6.2.55 0 .75-.2.35-.35.35-.75t-.3-.8q-3.85-4.05-8.35-5.3-.85-.95-.95-2.3v-.1q-.05-.85.2-1.8 2-3.05 2.7-6.25 1.25-1.7 1.25-3.45 0-1.4-.7-2.65.2-.55.3-1.35V-5.1q0-3.2-3-5.65-1.95-1.55-4.35-2-.95-.15-2-.15-3.3 0-5.85 1.85v2.7q.4-.35.85-.75l.05-.05q.75-.55 1.6-.95m-11.1-7.05.05.05q2.5 2.05 2.5 4.7v1.65q-.2.7-.35 1.2-.25.4-.25.7.1.35.25.6.8 1.2.8 2.35Q8.3-4.5 7.3-3.15q-.2.2-.3.5Q6.25.95 3.9 4.2q-.15.2-.15.45-.4 1.7-.25 3.25h.05q.35 2.55 2.2 4.35.15.25.5.3 4.75 1.35 9 5.7.35.35.85.35.55 0 .9-.35t.35-.8q0-.5-.35-.85-4.6-4.7-9.8-6.2-1.05-1.25-1.3-2.85-.1-1.05.15-2.1 2.4-3.5 3.25-7.35 1.45-1.85 1.45-4 0-1.6-.85-3.1.2-.65.4-1.45v-1.95q.05-3.75-3.45-6.65Q3.6-21.5-.5-21.5q-4.15 0-7.35 2.45h-.05q-3.45 2.9-3.45 6.65v1.95q.05.8.35 1.5-.8 1.45-.8 3.05 0 2.15 1.4 3.95.8 3.9 3.25 7.4.15 1.1.1 2.15-.1 1.65-1.1 2.8-5.2 1.4-9.75 6.2-.35.35-.35.85 0 .45.4.8.3.35.85.35.5 0 .8-.35 4.2-4.35 9.05-5.7.25-.05.5-.3 1.85-1.8 2-4.45.15-1.5-.3-3.15Q-5 4.4-5.1 4.2-7.35.9-8.2-2.65q-.05-.3-.2-.5-1-1.3-1-2.75 0-1.15.75-2.4.2-.25.2-.6 0-.3-.15-.65-.3-.5-.35-1.2v-1.65q0-2.65 2.5-4.7v-.05q2.6-2 5.95-2 3.25 0 5.85 2Z">
</path>
</svg></a><a href="#operator"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Operators</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#subject"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:subjects"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-24.9-12.2h-.05q-3.35 2.7-3.35 6.45v1.85q.05.85.35 1.5-.8 1.45-.8 3 0 2.05 1.3 3.9.85 3.65 3.15 7.15.35 1.1.2 2.05v.1q-.1 1.55-1.05 2.65-5.1 1.45-9.55 6.05-.3.4-.3.9 0 .45.4.8.25.3.8.3.5 0 .8-.3 4.1-4.3 8.8-5.6.25-.1.5-.3 1.75-1.8 1.95-4.35.1-1.4-.3-3.15-.05-.15-.2-.35-2.2-3.2-2.95-6.65-.05-.3-.2-.5-1-1.25-1-2.7 0-1.1.7-2.35.2-.25.2-.55 0-.35-.15-.6-.25-.55-.3-1.2v-1.65q.05-2.6 2.45-4.6v-.05q2.55-1.9 5.7-1.9 3.3 0 5.75 1.9l.05.05q.4.3.75.6v-3q-2.9-1.95-6.55-1.95-4 0-7.1 2.5M28.4-.7q0-4.6-3-8-.2-.9-1.45-.9-.55 0-.9.35-.4.35-.4.9 0 .5.4.85.1.2.35.35Q25.8-4.4 25.8-.7q0 3.75-2.55 6.6-.35.45-.35.9.1.6.45.95t.95.3q.5-.05.9-.4Q28.4 4 28.4-.7m1.95-12.55q-.4-.4-.9-.45-.5-.05-.85.35-.45.35-.5.8-.05.5.3.95 2 2.25 3.05 5.05Q32.5-3.8 32.5-.7q0 2.95-1.05 5.9Q30.4 8 28.4 10.25q-.35.4-.35.95.05.5.45.85.35.35.95.35.45-.1.8-.45Q32.6 9.3 33.8 6.1 35 2.75 35-.7q0-3.55-1.2-6.8-1.2-3.1-3.45-5.75m-19.4-6.2q2.85 2.3 2.85 5.35v1.9q-.2.8-.45 1.35-.2.4-.2.8.1.4.25.65.95 1.35.95 2.7-.05 1.6-1.25 3.1-.2.25-.3.55-.85 4.15-3.55 7.85-.15.2-.15.5-.45 1.9-.3 3.65l.05.05q.4 2.95 2.5 4.95.2.25.6.35 5.35 1.55 10.25 6.5.35.35.95.35t1.05-.35q.35-.4.35-.95 0-.55-.35-.95-5.25-5.35-11.2-7.1-1.2-1.35-1.45-3.25v.1q-.1-1.15.15-2.5 2.7-3.95 3.75-8.3Q17.1-4.3 17.1-6.7q0-1.8-1.05-3.5.3-.75.45-1.7v-.05q.05-.6.05-2.15.05-4.3-3.95-7.55-3.7-2.85-8.35-2.85-4.7 0-8.4 2.85Q-8.1-18.4-8.1-14.1v2.15q.1 1 .4 1.75-.9 1.7-.9 3.5 0 2.4 1.55 4.55.95 4.3 3.7 8.3.25 1.35.15 2.45v.05q-.1 1.85-1.2 3.15-5.95 1.65-11.15 7.1-.35.4-.35.95 0 .55.4.95.4.35 1 .35.55 0 .9-.35 4.8-4.95 10.3-6.5.25-.1.55-.35 2.1-2.05 2.3-5.1.15-1.7-.35-3.55-.05-.3-.2-.5Q-3.55 1-4.5-3.05l-.2-.5q-1.2-1.5-1.2-3.15 0-1.35.9-2.7.2-.35.2-.7t-.15-.75q-.35-.55-.45-1.35v-1.9q.05-3.05 2.9-5.35v-.1Q.45-21.8 4.25-21.8q3.75 0 6.65 2.25l.05.1Z">
</path>
</svg></a><a href="#subject"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Subjects</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#alarm"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:alarms"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="m3.8-31.9-.05-.05Q2.252-33.493.05-33.5q-2.212.002-3.8 1.6-1.539 1.528-1.55 3.75.004 1.587.8 2.85-5.24 1.194-9.25 5.2l-.05.05q-5.43 5.42-5.7 13V-7q-.045 18.564-4.65 23.35-3.124 3.122-2.95 5.35-.12 2.711 3.6 4.15.266.1.55.1H-8.4q.3 2.909 2.45 5.05 2.484 2.495 6 2.5 3.516-.005 6-2.5 2.15-2.141 2.45-5.05H23q.284 0 .55-.1 3.72-1.439 3.55-4.15.224-2.228-2.9-5.35Q19.595 11.564 19.55-7v-.05q-.275-7.584-5.7-13-4.047-4.051-9.3-5.25.849-1.264.85-2.85-.007-2.202-1.6-3.75m-2.1 5.45q-.632.609-1.55.65h-.2q-.911-.037-1.6-.65l-.05-.05q-.605-.683-.6-1.65-.012-.978.65-1.65.712-.702 1.7-.7.962-.007 1.6.65l.05.05q.707.688.7 1.65.002.987-.7 1.7M.2-22.8q6.753.059 11.55 4.85 4.575 4.584 4.8 11 .062 20.293 5.55 25.45 1.93 1.93 2.05 3.15-.188.764-1.45 1.3h-45.35q-1.262-.536-1.45-1.3.12-1.22 2.05-3.15 5.488-5.157 5.55-25.45V-7q.247-6.37 4.85-10.95Q-6.886-22.741-.1-22.8q.076.003.15 0 .05.002.1 0H.2m5.25 48.75q-.24 1.681-1.5 2.95-1.616 1.605-3.9 1.6-2.284.005-3.9-1.6-1.26-1.269-1.55-2.95H5.45Z">
</path>
</svg></a><a href="#alarm"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Alarms</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#gateway"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:gateways"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M21.15-21.25Q12.35-30 0-30q-12.45 0-21.25 8.75Q-30-12.4-30 0q0 12.35 8.75 21.15Q-12.5 30 0 30q12.35 0 21.15-8.8l.05-.05Q30 12.35 30 0q0-12.4-8.85-21.25M0-27.3q11.3 0 19.25 7.95v-.05Q27.3-11.35 27.3 0q0 11.25-8.05 19.25-8 8.05-19.25 8.05-11.35 0-19.35-8.05Q-27.3 11.3-27.3 0t7.9-19.35l.05-.05q8-7.9 19.35-7.9m13.85 13.35Q8.1-19.7 0-19.7q-8.15 0-13.95 5.75Q-19.7-8.1-19.7 0q0 8.15 5.75 13.85v.05q5.8 5.8 13.95 5.8 8.1 0 13.85-5.8l.05-.05Q19.7 8.15 19.7 0q0-8.1-5.85-13.95M0-17q7.05 0 11.95 4.9Q17-7.05 17 0t-5.05 11.95Q7 17 0 17q-7.05 0-12.05-5.05h-.05Q-17 7.05-17 0q0-7 4.9-12.05l.05-.05Q-7.05-17 0-17M4.45-3.2Q2.85-4.75.65-4.75q-2.15 0-3.7 1.55-1.6 1.55-1.6 3.75 0 2.25 1.6 3.75Q-1.5 5.9.65 5.9q2.2 0 3.8-1.6Q6 2.8 6 .55q0-2.2-1.55-3.75Z">
</path>
</svg></a><a href="#gateway"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Gateways</span></a>
</div>
<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#tracker"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:trackers"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-10.55-10.35q0 .05-.05.05-3.9 4.55-3.9 10.45 0 6.1 4.15 10.8.35.45 1 .5h.05q.6.05 1.1-.4v.05q.35-.45.35-1.05V10q.15-.6-.25-1.05-3.45-3.8-3.45-8.8 0-4.95 3.35-8.6v-.05q.1-.15.25-.3h.05q.45-.5.45-1 0-.6-.45-1.05h-.05q-.35-.45-1-.45-1.3 0-1.6.95M-21.6-8.6q-.05.05-.05.1-1.6 4.1-1.6 8.65 0 4.5 1.65 8.8V9q1.5 4.2 4.55 7.6.4.45 1.05.5.55 0 1.05-.3v-.05q.4-.4.45-1.05.1-.6-.3-1h-.05q-2.65-3.15-4-6.75-1.4-3.8-1.4-7.8 0-3.95 1.4-7.7v-.05q1.35-3.65 3.95-6.6h.05q.35-.45.3-1.1-.05-.55-.45-1-.5-.4-1.05-.4-.65.1-1.05.6v.05q-3 3.35-4.5 7.45m.35-12.4q-.05-.6-.5-.95-.4-.5-1.05-.45-.6.05-1.05.55-4 4.5-6.05 10.1v.15Q-32-5.9-32 .15t2.05 11.65q0 .05.05.15 1.85 5.45 5.9 10l.3.3q.45.45 1.05.45.55 0 1-.45.5-.5.5-1.05 0-.6-.5-1-.05 0-.05-.1-.05-.05-.05-.15-3.55-4.05-5.3-8.9V11l-.05-.05q-1.95-5.2-1.95-10.8 0-5.3 1.9-10.35h-.05q.05-.2.15-.35 1.75-5.25 5.45-9.35.45-.45.35-1.1m42.45-.35q-.05.6.45 1.1 3.55 4.1 5.4 9.45v-.05q.1.15.1.2v.05q1.9 5.05 1.9 10.5 0 5.5-2 10.65-1.75 4.95-5.3 9.05-.1.1-.1.2v.05q-.5.45-.5 1.05 0 .6.5 1.05.4.4 1 .4.55 0 1-.4.15-.2.35-.35 3.9-4.4 5.85-9.9 0-.05.05-.1Q32 5.9 32-.1q0-6.1-2.1-11.8l-.05-.05q-.05-.1-.05-.2-2.2-5.65-6-10-.4-.55-1-.6-.6-.05-1.05.4-.5.45-.55 1M7.85-9.15q.15.2.4.4.05 0 .05.05 3.2 3.65 3.2 8.6 0 4.9-3.35 8.75-.45.45-.45 1.05.1.6.55 1.05.4.4 1.05.35.65-.05 1.1-.5h-.05Q14.5 5.9 14.5-.1q0-6-3.85-10.4-.05-.05-.05-.1-.25-1.05-1.75-1.05-.65 0-1 .45-.5.4-.5 1.05 0 .55.5 1m-4.3 5.8Q2.1-4.75 0-4.75q-2.1 0-3.45 1.4-1.6 1.45-1.6 3.5 0 2.15 1.6 3.65Q-2.1 5.15 0 5.15T3.55 3.8q1.4-1.5 1.4-3.65 0-2.05-1.4-3.5m11.5-13.2q-.55.35-.55.95-.1.55.35 1.05 2.6 3 3.95 6.7v-.05q1.4 3.65 1.4 7.8 0 3.9-1.4 7.7-1.35 3.7-3.95 6.7-.5.45-.45 1.1.1.6.55 1.05H15q.4.35 1.05.35.6-.1 1-.45H17q3.1-3.55 4.65-7.65 1.5-4.4 1.5-8.8 0-4.65-1.5-8.85-1.55-4.05-4.55-7.5h.05q-.5-.45-1.05-.5-.6-.1-1 .4h-.05Z">
</path>
</svg></a><a href="#tracker"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Trackers</span></a>
</div>

<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#trackerZone"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em"
height="1em" viewBox="-50 -50 100 100" data-icon="rl:trackerZone"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M23.7-23.7Q13.982-33.494 0-33.5q-13.813-.006-23.7 9.75l-.05.05Q-33.506-13.813-33.5 0q.006 13.917 9.8 23.7 9.887 9.806 23.7 9.8 13.982-.006 23.7-9.8 9.793-9.783 9.8-23.7.006-13.813-9.8-23.7M0-30.5q12.718-.007 21.55 8.9Q30.494-12.587 30.5 0q.006 12.683-8.9 21.6h-.05Q12.718 30.507 0 30.5q-12.587-.006-21.6-8.95v.05q-8.907-8.917-8.9-21.6.006-12.57 8.9-21.6 9.03-8.894 21.6-8.9m2.7 48.35v-25.9h-5.5v25.9h5.5M0-11.9q1.45 0 2.25-.8.8-.85.8-2.25 0-1.45-.8-2.25T0-18q-1.5 0-2.3.8-.85.8-.85 2.25 0 1.4.85 2.25.8.8 2.3.8Z">
</path>
</svg></a><a href="#trackerZone"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Limits</span></a>
</div>

<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#track"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-67 -67 100 100" data-icon="rl:tracks"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M-37.05-26.35q-.55.4-.65 1.1-.1.65.3 1.2.4.55 1.1.7.65.1 1.2-.3 1.65-1.25 2.75-2.5.45-.55.4-1.2 0-.7-.55-1.1-.5-.5-1.2-.45-.7.05-1.1.55-.9 1-2.25 2m2.1-13.25q-.55-.45-1.2-.35-.7.05-1.1.55-.5.55-.4 1.25.05.65.6 1.1 1.2 1 2.05 2.05.45.5 1.15.55.7.05 1.2-.4t.6-1.1q.05-.7-.4-1.2-1-1.2-2.5-2.45M-44.3-4.2q-.4.55-.25 1.25.1.7.65 1.1Q-42.5-1-40.95 0q.55.35 1.2.2.65-.15 1.05-.7.35-.6.2-1.3-.15-.65-.7-1-1.55-.95-2.8-1.8-.6-.4-1.25-.3-.7.15-1.05.7m-6.4-9.2q-.2-.7-.8-1-.65-.3-1.25-.1-.7.2-1 .85-.3.6-.1 1.25.5 1.65 1.95 3.5.4.5 1.1.6.7.05 1.25-.3.5-.45.6-1.15.1-.7-.3-1.2-1.05-1.3-1.45-2.45m7.2-7.6q.25-.6 0-1.25-.2-.65-.85-.9-.6-.3-1.25-.1-1.7.65-3.05 1.35-.6.35-.8.95-.2.7.1 1.3.3.6 1 .8.65.2 1.25-.1 1.15-.6 2.65-1.2.65-.2.95-.85m1.1-22.9q-.2-.65-.8-.95-1.4-.7-2.9-1.4-.65-.3-1.3-.1-.6.25-.9.9-.3.6-.05 1.25.2.65.85.95 1.45.65 2.75 1.35.65.3 1.3.1.65-.25.95-.8.3-.65.1-1.3m47.95 56q0-.5-.35-.9Q.25 6.15-5.35 4.5q-1.15-1.3-1.4-3.05v.1q-.1-1.1.15-2.35 2.55-3.75 3.55-7.85Q-1.5-10.7-1.5-13q0-1.65-1-3.3.3-.7.45-1.6v-.05q.05-.55.05-2 0-4.1-3.75-7.15-3.5-2.7-7.9-2.7-4.45 0-7.9 2.7h-.05q-3.75 3.05-3.7 7.15v2.05q.05.9.35 1.65-.85 1.6-.85 3.25 0 2.3 1.5 4.3.9 4.1 3.45 7.9.25 1.25.2 2.3v.05q-.1 1.75-1.15 2.95-5.65 1.6-10.55 6.7-.35.4-.35.9 0 .55.4.9.35.35.9.35.6 0 .9-.35 4.5-4.65 9.75-6.1.2-.1.5-.35 2-1.95 2.15-4.8.15-1.6-.3-3.4-.05-.25-.2-.45-2.4-3.6-3.3-7.4-.1-.3-.2-.5-1.1-1.45-1.1-3 0-1.25.8-2.55.2-.3.2-.65 0-.35-.15-.7-.3-.5-.4-1.3v-1.75q.05-2.9 2.75-5.1v-.05q2.8-2.15 6.35-2.15t6.3 2.15l.05.05q2.65 2.2 2.65 5.1v1.75q-.15.8-.35 1.3-.2.4-.2.75.05.4.2.65.9 1.25.9 2.5-.05 1.55-1.15 2.95-.2.25-.3.55-.85 3.9-3.35 7.4-.15.2-.15.45Q-9.5.2-9.3 1.85q.4 2.8 2.4 4.7.15.25.5.35 5.1 1.45 9.7 6.1.35.35.95.35.55 0 .95-.35.35-.35.35-.9m-.8-26q.15.15.35.3Q7.4-11 7.4-7.5q0 3.55-2.4 6.25-.35.4-.35.85.1.55.4.85.35.35.9.3.5-.05.85-.4 3-3.4 3-7.85 0-4.35-2.8-7.55-.2-.85-1.4-.85-.5 0-.85.35-.35.3-.35.8 0 .45.35.85m10.2 0q-1.15-2.95-3.3-5.45-.35-.4-.8-.4-.5-.1-.85.3-.4.3-.45.75-.05.5.3.9 1.85 2.15 2.85 4.8 1 2.55 1 5.5 0 2.8-1 5.55-1 2.65-2.9 4.8-.3.4-.3.9.05.5.4.8.4.35.9.3.5-.05.8-.35 2.2-2.55 3.35-5.6 1.1-3.15 1.1-6.4 0-3.35-1.1-6.4Z">
</path>
</svg></a><a href="#track"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Tracking</span></a>
</div>

<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#fingerprint"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em"
height="1em" viewBox="0 0 512 512" data-icon="rl:settings"
class="iconify text-[35px] m-[5px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M390.42,75.28a10.45,10.45,0,0,1-5.32-1.44C340.72,50.08,302.35,40,256.35,40c-45.77,0-89.23,11.28-128.76,33.84C122,77,115.11,74.8,111.87,69a12.4,12.4,0,0,1,4.63-16.32A281.81,281.81,0,0,1,256.35,16c49.23,0,92.23,11.28,139.39,36.48a12,12,0,0,1,4.85,16.08A11.3,11.3,0,0,1,390.42,75.28Zm-330.79,126a11.73,11.73,0,0,1-6.7-2.16,12.26,12.26,0,0,1-2.78-16.8c22.89-33.6,52-60,86.69-78.48C209.42,65,302.35,64.72,375.16,103.6c34.68,18.48,63.8,44.64,86.69,78a12.29,12.29,0,0,1-2.78,16.8,11.26,11.26,0,0,1-16.18-2.88c-20.8-30.24-47.15-54-78.36-70.56-66.34-35.28-151.18-35.28-217.29.24-31.44,16.8-57.79,40.8-78.59,71A10,10,0,0,1,59.63,201.28ZM204.1,491a10.66,10.66,0,0,1-8.09-3.6C175.9,466.48,165,453,149.55,424c-16-29.52-24.27-65.52-24.27-104.16,0-71.28,58.71-129.36,130.84-129.36S387,248.56,387,319.84a11.56,11.56,0,1,1-23.11,0c0-58.08-48.32-105.36-107.72-105.36S148.4,261.76,148.4,319.84c0,34.56,7.39,66.48,21.49,92.4,14.8,27.6,25,39.36,42.77,58.08a12.67,12.67,0,0,1,0,17A12.44,12.44,0,0,1,204.1,491Zm165.75-44.4c-27.51,0-51.78-7.2-71.66-21.36a129.1,129.1,0,0,1-55-105.36,11.57,11.57,0,1,1,23.12,0,104.28,104.28,0,0,0,44.84,85.44c16.41,11.52,35.6,17,58.72,17a147.41,147.41,0,0,0,24-2.4c6.24-1.2,12.25,3.12,13.4,9.84a11.92,11.92,0,0,1-9.47,13.92A152.28,152.28,0,0,1,369.85,446.56ZM323.38,496a13,13,0,0,1-3-.48c-36.76-10.56-60.8-24.72-86-50.4-32.37-33.36-50.16-77.76-50.16-125.28,0-38.88,31.9-70.56,71.19-70.56s71.2,31.68,71.2,70.56c0,25.68,21.5,46.56,48.08,46.56s48.08-20.88,48.08-46.56c0-90.48-75.13-163.92-167.59-163.92-65.65,0-125.75,37.92-152.79,96.72-9,19.44-13.64,42.24-13.64,67.2,0,18.72,1.61,48.24,15.48,86.64,2.32,6.24-.69,13.2-6.7,15.36a11.34,11.34,0,0,1-14.79-7,276.39,276.39,0,0,1-16.88-95c0-28.8,5.32-55,15.72-77.76,30.75-67,98.94-110.4,173.6-110.4,105.18,0,190.71,84.24,190.71,187.92,0,38.88-31.9,70.56-71.2,70.56s-71.2-31.68-71.2-70.56C303.5,293.92,282,273,255.42,273s-48.08,20.88-48.08,46.56c0,41,15.26,79.44,43.23,108.24,22,22.56,43,35,75.59,44.4,6.24,1.68,9.71,8.4,8.09,14.64A11.39,11.39,0,0,1,323.38,496Z">
</path>
</svg></a><a href="#fingerprint"><span
class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Fingerprint</span></a>
</div>


<div class="p-1 hover:bg-primary/5 rounded-xl cursor-pointer">
<a href="#setting"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" width="1em" height="1em"
viewBox="-50 -50 100 100" data-icon="rl:settings"
class="iconify text-[50px] bg-[transparent] text-[#008EED] iconify--rl">
<path fill="currentColor"
d="M5.7-29.9q-.05 0-.1.05-.05 0-.05.05v.1q-.05 0-.05.05l-2.75 6.4q-.05.15-.2.25-.1.05-.25.05-2.4-.3-4.55.1-.15 0-.3-.05-.15-.1-.15-.25l-2.55-6.3q-.05-.05-.05-.1-.05-.25-.15-.3-.1-.05-.15-.05-.15-.1-.35.1-.1.05-.2.05l-10.5 4.3q-.15.05-.25.1-.2.05-.25.1-.05.05-.05.1-.05.1.05.4v-.05l2.7 6.55q.05.15 0 .3-.1.15-.2.25-1.7 1.2-3.15 3.1-.1.15-.25.2-.15.05-.25 0l-6.4-2.55q-.1-.05-.1-.1-.1-.05-.15-.05-.1.05-.2.05-.15.05-.2.15-.05.1-.15.25l-4.4 10.5q0 .1-.05.2-.1.15 0 .35l.05.05q.15.15.35.25l.05.05 6.3 2.55q.15.05.25.15v.25q-.25 2.55 0 4.65v.25q-.1.15-.25.25l-6.5 2.55h-.05q-.1 0-.15.1v.2q-.1.15-.1.25.05 0 .05.05l4.65 11q.05.05.25.2H-24.6l6.25-2.6q.15-.05.3 0 .15 0 .25.15 1.25 1.6 3.2 3.2.1 0 .15.2.05.15 0 .25l-2.6 6.4-.1.1q-.05.1-.05.2.05.05.05.1.05.2.3.25.1 0 .2.1l10.45 4.4h.1q.3.05.65 0 .1-.05.15-.15v-.05l2.6-6.35q0-.2.15-.25.1-.05.25-.05 2.5.15 4.6 0 .15 0 .25.05.15.05.2.2l2.65 6.4q0 .05.05.1v.05h.15q.25.05.45.05h.15l10.7-4.5q.2-.05.3-.35v.05q.05-.1.05-.2l-.05-.05-2.65-6.5q-.05-.1 0-.25 0-.2.1-.25 1.75-1.4 3.35-3.25.05-.1.25-.1.1-.05.25 0l6.2 2.65H25.15q.2-.05.3-.3l4.5-10.8v.1q.05-.3 0-.55v-.1q-.05-.15-.15-.15h-.05l-6.4-2.55q-.15-.1-.2-.2-.1-.1-.1-.25.15-2.45 0-4.7 0-.1.1-.25.05-.1.2-.15l6.3-2.6h.1q.1-.2.2-.35.05-.2.05-.35v-.05l-4.45-10.6q-.1-.1-.1-.2-.1-.15-.3-.2-.1-.05-.15-.1-.1-.05-.2.1-.1.1-.3.1l-6.05 2.5q-.15.05-.25.05-.2-.05-.25-.15-1.5-1.8-3.35-3.1-.1-.1-.1-.25-.05-.15 0-.3l2.7-6.4v-.5q-.1-.2-.3-.25-.05 0-.1-.05L6.05-29.9q-.2-.1-.35 0M7-25.8q.05-.15.2-.2.2-.1.35 0l5.5 2.2q.1.05.2.2.1.2.05.35L11-17.4l-.1.1v.1q.05.05.1.15 0 .1.1.15h.1l1.55 1.3v.05q1.7 1.45 2.8 2.8l.05.05 1.15 1.7q.05.05.15.1.05 0 .15.1.05-.05.15-.1.1-.1.2-.1l5.8-2.25q.1-.1.3 0 .15.05.2.2l2.35 5.55q.1.2.05.35-.1.2-.3.25l-5.6 2.35q-.05.1-.25.1-.15 0-.15.1-.05.05-.1.15v.1l.35 1.8v.2q-.05.05-.1.15.25 1.75.1 4.15l-.25 1.9q0 .05-.05.15-.05.05-.05.15.15.1.4.3l5.7 2.45q.2.05.3.25.05.15 0 .35l-2.25 5.5q-.1.2-.3.2-.15.1-.35 0L17.35 11h-.05q-.1-.1-.25-.15-.05.1-.15.15-.05.05-.05.1l-.05.1-1.25 1.55v.05Q14 14.55 12.7 15.6l-1.55 1.2h-.05q-.1.05-.1.15-.05.1-.1.15-.05.1.1.2.1.1.1.25l2.3 5.75q.05.15-.05.3-.1.2-.25.3l-5.55 2.15q-.15.05-.35-.05-.15-.05-.2-.2l-2.5-5.7.05.05q-.1-.2-.15-.25l-.1-.05q-.15-.05-.25-.1L2.1 20h-.2q-1.45.25-3.85.1L-4 19.75q-.15 0-.2-.05v.1l-.3.2q-.05 0-.05.05v.05l-2.5 5.7q-.05.15-.2.25-.2.05-.3 0l-5.4-2.15q-.2-.1-.25-.3-.1-.15 0-.3l2.25-5.85q.05-.2.05-.35-.05-.25-.1-.3l-.05-.05-1.45-1.05q-.1-.1-.15-.2-1.95-1.45-2.95-2.8-.1-.15-.15-.2-.05 0-.05-.05l-.95-1.3-.2-.2h-.1q-.2-.05-.25.05h-.1l-5.7 2.45h-.2q-.15 0-.25-.05-.1-.1-.15-.2l-2.25-5.55q-.05-.2 0-.35.05-.2.25-.25l5.75-2.5.2-.2q.05-.25.2-.3l-.4-1.85q-.05-.1-.05-.25-.15-1.6 0-3.95v-.1l.35-1.9q0-.1.05-.15 0-.05-.05-.15-.05 0-.05-.05-.1-.1-.2-.1h-.05L-25.7-6.8q-.2-.05-.25-.25-.05-.15 0-.3l2.25-5.55q.05-.2.25-.25.15-.1.35 0l5.7 2.35h.05q.05.1.2.05.05-.05.1-.05l.3-.2 1.15-1.7q0-.05.05-.05 1.6-1.65 2.95-2.8v-.05l1.6-1.2h.05v-.6l-2.25-5.85q-.05-.15 0-.35.05-.15.25-.2l5.4-2.2q.2-.1.35 0 .2.05.25.2l2.4 5.7v.2q0 .1.1.2h.05q.1 0 .45.1h.05l1.95-.3q1.6-.2 4.15.05l1.65.15H4q.05 0 .1.05h.35v-.05q.1-.15.1-.2 0-.1.05-.2L7-25.8M4.75-11.3q-1.8-.75-3.7-.85-2.6-.35-5.1.7-.05.05-.1.05-.25.05-.5.15-.2.1-.3.2L-5-11q-2.7.95-4.35 3-1.1 1.3-1.95 3.3-1.1 2.7-.95 5.35.1 1.75.75 3.5.05.25.2.5 0 .05.05.1 1.8 4.7 6.65 6.7 4.6 1.9 9.35 0 4.7-1.95 6.65-6.7V4.7q1.9-4.65 0-9.35-2-4.75-6.6-6.6l-.05-.05m3.8 7.75v-.05q1.55 3.55.1 7.2H8.6Q7.15 7.15 3.5 8.65q-3.4 1.5-6.95 0-3.7-1.5-5.15-5-1.5-3.6 0-7.25v.05q.9-2.2 2.55-3.55 1.1-.85 2.55-1.35h-.05q1.6-.7 3.15-.8 1.9-.15 4 .8 3.55 1.35 4.95 4.9Z">
</path>
</svg></a><a href="#setting"><span class="text-[#008EED] text-[15px] px-[0px] py-[0px]">Settings</span></a>
</div>



</div>

+ 19
- 29
assets/templates/trackerZone.html Zobrazit soubor

@@ -1,4 +1,4 @@
<div class="h-full lg:min-w-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">
<div class="h-full xl:min-w-0" x-data="UI.createTable({db:'{arguments:db}'})">

<div class="border-base-200 flex items-center justify-between px-5 mb-[10px] space-x-3">

@@ -13,37 +13,27 @@
placeholder="Search" />
</label>

<!-- <div class="dropdown dropdown-bottom dropdown-end">
<div
tabindex="0"
role="button"
class="btn btn-outline btn-primary">
<span
class="iconify lucide--columns-3-cog size-4"></span>
<div class="columnsDropdown dropdown dropdown-bottom dropdown-end">
<div tabindex="0" role="button" class="btn btn-outline btn-primary">
<span class="iconify lucide--columns-3-cog size-4"></span>

</div>

<div tabindex="0" class="dropdown-content bg-base-100 rounded-box w-44 shadow">
<ul class="menu w-full">
<template
x-for="column in allLeafColumns"
:key="column.id">
<li @click="toggleColumn(column)">
<div
class="group gap-2.5"
:data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span
class="font-medium"
x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
<ul class="menu w-full">
<template x-for="column in allLeafColumns" :key="column.id">
<li @click="toggleColumn(column)" class="columnVisibility">
<div class="group gap-2.5" :data-visible="isColumnVisible(column) ? true : null">
<span
class="iconify lucide--check size-4 scale-50 opacity-0 transition-all duration-300 group-data-visible:scale-100 group-data-visible:opacity-100"></span>

<span class="font-medium" x-text="column.columnDef.header"></span>
</div>
</li>
</template>
</ul>
</div>
</div> -->
</div>

<div class="dropdown dropdown-bottom dropdown-end">
<div aria-label="More actions" tabindex="0" role="button" class="btn btn-outline btn-primary">
@@ -75,7 +65,7 @@
</div>
</div>

<div class="flex w-full px-[30px]">
<div class="flex px-[30px]">

<div
class=" max-h-[calc(100vh-260px)] overflow-y-scroll overflow-x-auto w-full border-solid border-1 border-[#008EED] rounded-none">
@@ -176,7 +166,7 @@
<template x-if="cell.column.id === 'actions'">
<div class="gap-2 text-right">
<button aria-label="Show" class="saveButton btn btn-outline btn-primary"
@click="viewRow(cell.row)">Open</button>
@click="viewRow(cell.row)">Modify</button>
<!-- <button
aria-label="Show"
class="btn btn-soft btn-xs btn-square"


binární
db/.DS_Store Zobrazit soubor


+ 0
- 0
db/Icon Zobrazit soubor


+ 0
- 0
db/presence/Icon Zobrazit soubor


+ 0
- 0
db/reslevis/Icon Zobrazit soubor


+ 10
- 3
db/reslevis/Setting.json Zobrazit soubor

@@ -5,20 +5,27 @@
"role": "developer",
"unit": 1,
"update": 5000,
"debug": true
"debug": true,
"debugFields": [
"id",
"status"
],
"language": "en"
},
{
"id": "900000000002",
"name": "Administrator settings",
"role": "administrator",
"unit": 1,
"debug": false
"debug": false,
"language": "en"
},
{
"id": "900000000003",
"name": "User settings",
"role": "user",
"unit": 1,
"debug": false
"debug": false,
"language": "en"
}
]

+ 0
- 0
db/reslevis/Track/Icon Zobrazit soubor


+ 22
- 0
err.json Zobrazit soubor

@@ -0,0 +1,22 @@
{
"detail": [
{
"type": "missing",
"loc": [
"body",
"tracker"
],
"msg": "Field required",
"input": {
"id": "b77508ac-dfc7-4171-bae0-7a986cc8bb94",
"name": "SubjectTest",
"role": "",
"phone": "",
"zones": "",
"groups": "",
"building": "665267c5-b466-4351-a27f-044ee24c0ccb",
"notes": ""
}
}
]
}

binární
jsonic/.DS_Store Zobrazit soubor


+ 0
- 0
jsonic/Icon Zobrazit soubor


+ 0
- 0
jsonic/images/Icon Zobrazit soubor


+ 0
- 0
jsonic/images/flags/Icon Zobrazit soubor


+ 0
- 0
jsonic/images/langs/Icon Zobrazit soubor


+ 0
- 0
jsonic/js/Icon Zobrazit soubor


+ 16029
- 0
jsonic/js/jsonic.1.0.13 copia.js
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 16029
- 0
jsonic/js/jsonic.1.0.13.js
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


jsonic/js/jsonic-1.0.14.js → jsonic/js/jsonic.1.0.14.js Zobrazit soubor


+ 0
- 0
jsonic/modules/Icon Zobrazit soubor


+ 0
- 0
jsonic/plugins/Icon Zobrazit soubor


binární
uploads/.DS_Store Zobrazit soubor


+ 0
- 0
uploads/Icon Zobrazit soubor


+ 0
- 0
uploads/plans/Icon Zobrazit soubor


Načítá se…
Zrušit
Uložit