diff --git a/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 b/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 new file mode 100644 index 00000000..a2dd6629 --- /dev/null +++ b/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "1\u003d1" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d b/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d new file mode 100644 index 00000000..a698d92e --- /dev/null +++ b/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d @@ -0,0 +1,10031 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "MCM02" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "expression": "\"http://127.0.0.1:5500/MCM02.svg?var\" + toMillis(now(1000))" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden", + "pointerEvents": "none" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm01" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 0.0333, + "width": 0.0646, + "x": 0.0177, + "y": 0.6167 + }, + "props": { + "primary": false, + "text": "MCM01 - FLUID INBOUND" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "NCS1_1_SOL1" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1724, + "y": 0.4556 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL2" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.4389 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL3" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL4" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL5" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL6" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL7" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL8" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL9" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL10" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL11" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL12" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL13" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL14" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL15" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL16" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL17" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL18" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL19" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL20" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL21" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL22" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL23" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL24" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL25" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL26" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL27" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL28" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL29" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL30" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL31" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL32" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL33" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL34" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL35" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL36" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL37" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL38" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL39" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL40" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL41" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL42" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL43" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL44" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL45" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL46" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL47" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL48" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL49" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL50" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL51" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL52" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL53" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL54" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL55" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL56" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL57" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL58" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL59" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL60" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL61" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL62" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL63" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL64" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL65" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL66" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL67" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL68" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL69" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL70" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL71" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL72" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL73" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL74" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL75" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL77" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL78" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.9036, + "y": 0.4537 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL76" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.4389 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_EPC2" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.0109, + "y": 0.5028 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_EPC1" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.0099, + "y": 0.3926 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.1906, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.137, + "y": 0.3787 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SS1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9281, + "y": 0.4019 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/SS_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2146, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 + }, + "props": { + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Camera" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_JR2" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.0792, + "y": 0.5 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_JR1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.0802, + "y": 0.3991 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.063, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.1068, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.1411, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.1031, + "y": 0.3787 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.0417, + "y": 0.4 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_BCN1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.0818, + "y": 0.3778 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_ENW1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.1057, + "y": 0.4546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/Encoder" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_ENW1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.137, + "y": 0.4546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/Encoder" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM2" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.2635, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM3" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.3172, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM5" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5078, + "y": 0.5278 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM4" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.4, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM6" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5797, + "y": 0.5269 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM7" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6552, + "y": 0.5259 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM8" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.7302, + "y": 0.5259 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM9" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8021, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.2323, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.2698, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3057, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3688, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4063, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4432, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5177, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5521, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5896, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6589, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6958, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7349, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8036, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8443, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8818, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8812, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8422, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8057, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7297, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6885, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6542, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5813, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.549, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5115, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4437, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4068, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3682, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.6009 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5843 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5676 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5954 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5769 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.6 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5833 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5667 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5981 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5796 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5963 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5667 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5833 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.6 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5806 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5796 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.563 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5796 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5963 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5981 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5759 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5954 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_B" + }, + "position": { + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3083 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_A" + }, + "position": { + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3242 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2146, + "y": 0.338 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.3315 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.313 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3065 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3231 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3139 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3398 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3324 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3352 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3167 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3065 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3231 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3398 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3074 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3241 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3176 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3361 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3361 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3176 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3074 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3241 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3222 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3222 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_EPC1" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.9091, + "y": 0.3968 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_EPC2" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.9096, + "y": 0.5023 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Beacon_63" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3731 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_BNC1_R" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3565 + }, + "props": { + "params": { + "name": "red", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_BNC1_H" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3398 + }, + "props": { + "params": { + "name": "horn", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.1927, + "y": 0.3824 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR3" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3391, + "y": 0.3852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR5" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.475, + "y": 0.388 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR7" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6208, + "y": 0.3907 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR9" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7698, + "y": 0.3907 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR4" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3422, + "y": 0.5157 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR6" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4854, + "y": 0.5139 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR8" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6312, + "y": 0.513 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR10" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7766, + "y": 0.5111 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.2625, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.4005, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6542, + "y": 0.3741 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.837, + "y": 0.3741 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM10" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8698, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE1" + }, + "position": { + "height": 0.0315, + "width": 0.1307, + "x": 0.2018, + "y": 0.4046 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE3" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.345, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE5" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.4898, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE7" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.6357, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE9" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.7815, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE4" + }, + "position": { + "height": 0.0296, + "width": 0.1307, + "x": 0.3476, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE6" + }, + "position": { + "height": 0.0306, + "width": 0.1323, + "x": 0.4893, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE8" + }, + "position": { + "height": 0.0324, + "width": 0.1323, + "x": 0.6331, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE10" + }, + "position": { + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PE1" + }, + "position": { + "height": 0.0352, + "width": 0.0573, + "x": 0.2026, + "y": 0.3454 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Photoeye_1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PE1" + }, + "position": { + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 + }, + "props": { + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Camera" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SS2" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9297, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/SS_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9102, + "y": 0.5333 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.9104, + "y": 0.5546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2542, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch105_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2911, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch107_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3599, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch109_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3964, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.501, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5781, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6875, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.725, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7943, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8323, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8698, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3594, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3958, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5021, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.576, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6859, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.724, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7958, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8339, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8703, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCM02" + }, + "position": { + "height": 0.0278, + "width": 0.0219, + "x": 0.2437, + "y": 0.5519 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/MCM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_DPM1" + }, + "position": { + "height": 0.0231, + "width": 0.0156, + "x": 0.3363, + "y": 0.4278 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_DPM2" + }, + "position": { + "height": 0.0231, + "width": 0.0156, + "x": 0.6222, + "y": 0.4278 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.3984, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6896, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8349, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2307, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2703, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch105_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3073, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch107_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.376, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch109_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4125, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5172, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5943, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7036, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7411, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8104, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8484, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8859, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3755, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.412, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5182, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5922, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7021, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7401, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.812, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.85, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8865, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2026, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PE2" + }, + "position": { + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE11" + }, + "position": { + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 b/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 new file mode 100644 index 00000000..70b24ca8 --- /dev/null +++ b/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 @@ -0,0 +1,289 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 1, + "string": "Running" + }, + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Starting", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Running" + }, + { + "input": 2, + "output": "EStop or Faulted" + }, + { + "input": 3, + "output": "Gridlock Prevention" + }, + { + "input": 4, + "output": "Full" + }, + { + "input": 5, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.name": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 20 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "substring({view.params.name}, 0, 1)" + }, + "type": "expr" + } + } + }, + "props": { + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + }, + { + "input": 3, + "output": "#FF00FF" + }, + { + "input": 4, + "output": "#0000D9" + }, + { + "input": 5, + "output": "#FF8C00" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa b/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa new file mode 100644 index 00000000..7146a086 --- /dev/null +++ b/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa @@ -0,0 +1,3 @@ +SELECT DISTINCT sorter +FROM package_history +ORDER BY sorter ASC; \ No newline at end of file diff --git a/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 b/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 new file mode 100644 index 00000000..d934726c --- /dev/null +++ b/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 @@ -0,0 +1,46 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + success AS success_pph, + awcs AS awcs_issues_pph, + operational AS operational_issues_pph, + machine AS machine_issues_pph, + scanner AS scanner_issues_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 b/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 new file mode 100644 index 00000000..4b2e1414 --- /dev/null +++ b/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 @@ -0,0 +1,393 @@ +{ + "custom": {}, + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "", + "tagPathControl": "", + "view": "" + }, + "propConfig": { + "params.enableTooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPathControl": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 135 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label}, {value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontSize": "12px", + "fontWeight": "bold", + "overflow": "hidden", + "paddingLeft": "5px", + "textOverflow": "ellipsis", + "textTransform": "uppercase", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.params.enableTooltip" + }, + "type": "property" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStart\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 60px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/SetStart" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/Alarms/bStarted" + }, + "transforms": [ + { + "expression": "coalesce({value}, false)", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#32CD32" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â–º", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStop\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 32.5px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/SetStop" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/Alarms/bStarted" + }, + "transforms": [ + { + "expression": "coalesce({value}, true)", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â– ", + "textStyle": { + "fontFamily": "monospace", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 b/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 new file mode 100644 index 00000000..ee4066a0 --- /dev/null +++ b/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 @@ -0,0 +1,327 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP03/S01/S01_CH01" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value.split(\"/\")[-1])", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Chute" + }, + "position": { + "height": 20, + "width": 60, + "x": 220, + "y": 195 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": "{view.params.props.config.isRightOfSorter}", + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + } + } + }, + "props": { + "path": "Templates/Areas/FlexChute", + "style": { + "transform": "scale(3) rotate(90deg)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 b/.resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 new file mode 100644 index 00000000..d8fbcb47 Binary files /dev/null and b/.resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 differ diff --git a/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 b/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 new file mode 100644 index 00000000..88063614 --- /dev/null +++ b/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FF0000" + } + } +} \ No newline at end of file diff --git a/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 b/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 new file mode 100644 index 00000000..3ae30422 --- /dev/null +++ b/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 @@ -0,0 +1,63 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("PE BreakCount Handler") + +# For inserting data into database: +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO pe_history (lane_id,count) VALUES (?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + if millisec > 4: + LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processBreak(laneID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count]) + logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time) + +def processBreakAsync(laneID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + def processConfirmInner(): + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count]) + logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + \ No newline at end of file diff --git a/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 b/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 new file mode 100644 index 00000000..4cd97f3d --- /dev/null +++ b/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,208,208,1) 0%, rgba(208,208,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 b/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 new file mode 100644 index 00000000..a4139cb2 --- /dev/null +++ b/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 @@ -0,0 +1,907 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/So01_CH01" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 60 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 20, + "width": 38, + "x": 22 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/IsChuteMode" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "coalesce({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false, + "type": "bar" + }, + "status": { + "color": "#FFF" + } + }, + "type": "dex.display.conveyor" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Gaylord" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "try( tag({view.params.tagPath}+\"/CH/IsCartMode\")\r\n\t||tag({view.params.tagPath}+\"/CH/IsGLLMode\"),\r\n\ttrue\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.gaylord" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Chute" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 23 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "LS1" + }, + "position": { + "height": 6, + "width": 6, + "x": 19, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LS1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR Presence)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "x": 10, + "y": 15 + }, + "propConfig": { + "position.x": { + "binding": { + "config": { + "expression": "if({../BCN1_AMB.meta.visible}, 10, 5)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "x": 5, + "y": 15 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GS1_ENABLE" + }, + "position": { + "height": 6, + "width": 6, + "x": 38, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PE3" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 8, + "x": 3, + "y": 2 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE3/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE4" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%", + "angle": "-45deg" + }, + "width": 8, + "x": 5, + "y": 10 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE4/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL Presence)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE2" + }, + "position": { + "height": 6, + "width": 28, + "x": 13, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE2/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 50% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE1B" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 20, + "x": 15 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": "-45deg", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "45deg" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": 14, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE1B/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE1A" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 20, + "x": 15 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": "45deg", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "-45deg" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 14 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE1A/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RS1_RESTART" + }, + "position": { + "height": 6, + "width": 6, + "x": 44, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FIO1" + }, + "position": { + "height": 5, + "width": 10, + "x": 50, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.eip" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"FlexChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"chutedestination\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"isRightOfSorter\": self.view.params.isRightOfSorter,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c b/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c new file mode 100644 index 00000000..138c3b1c --- /dev/null +++ b/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c @@ -0,0 +1,160 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\"No Configs\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "struct": { + "auth": "{session.props.auth.user.roles}", + "tabs": "{[default]Gateway/ConfigTabs}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\"]\n\tauth \u003d value.auth\n\ttabs \u003d value.tabs\n\tisNotAuth \u003d (auth \u003d\u003d None or len(auth) \u003d\u003d 0 or len([i for i in auth if i in roles]) \u003d\u003d 0)\n\treturn [v[\"title\"] for v in utils.datasetToJSON(tabs) if v[\"isVisible\"] and not (v[\"isSupervisor\"] and isNotAuth)]", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 140 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Configs/\"\r\n+replace(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\" \",\r\n\t\"\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "path": "Windows/Configs/Shifts" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 b/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 new file mode 100644 index 00000000..34dce851 --- /dev/null +++ b/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 @@ -0,0 +1,59 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 820 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Inbound" + }, + "position": { + "height": 800, + "width": 636, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 630, + "y": 79 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 b/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 new file mode 100644 index 00000000..5d17949f --- /dev/null +++ b/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 @@ -0,0 +1,19 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:%i:00") AS time, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id = :induct + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM INDUCTS; \ No newline at end of file diff --git a/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 b/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 new file mode 100644 index 00000000..29a285e2 --- /dev/null +++ b/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 @@ -0,0 +1,5 @@ +{ + "base": { + "style": {} + } +} \ No newline at end of file diff --git a/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb b/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb new file mode 100644 index 00000000..03181be6 --- /dev/null +++ b/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb @@ -0,0 +1,4283 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 650, + "width": 1450 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 0.0462, + "width": 0.0897, + "x": 0.0097, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Conveyor" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0862, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Chute" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.16, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "EStop or Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0869, + "y": 0.64 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Beacons" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_13" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0869, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Horn" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_18" + }, + "position": { + "height": 0.0462, + "width": 0.0759, + "x": 0.38, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "EIP Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_19" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_20" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_33" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Starting" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_34" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.4228, + "y": 0.8769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_36" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.5669, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "EPC Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_37" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6014, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Idle" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_39" + }, + "position": { + "height": 0.0462, + "width": 0.1172, + "x": 0.3821, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Photoeye Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_40" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.3346 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Clear" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_46" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6355, + "y": 0.8731 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_47" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.5834, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Scanner Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_52" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4076, + "y": 0.6292 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_53" + }, + "position": { + "height": 0.0462, + "width": 0.1034, + "x": 0.3703, + "y": 0.58 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "VFD Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_55" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.469, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Encoder Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_56" + }, + "position": { + "height": 0.0462, + "width": 0.1586, + "x": 0.4731, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Control Station Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_57" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_0" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_1" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_2" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_63" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jammed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_3" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.2538 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_4" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.2538 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_64" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2462 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_66" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2923 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "50% Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_5" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.3 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF0", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_6" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF0", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_7" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "limegreen", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_8" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "limegreen", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_67" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_9" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#87CEFA", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_73" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Energy Management" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_10" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#CCFFCC", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_11" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#CCFFCC", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_74" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.4308 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Enabled, Not Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_12" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#D3D3D3", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_75" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.4769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Off (Inactive)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_13" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#808080", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_14" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#808080", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_76" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "No Comm or Disabled by HMI / PLC" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_15" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.5769 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_16" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.5769 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_77" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.5692 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Non Powered Equipment" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_HRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.6969 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_ON_HRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.6969 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#888", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_78" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "EStop or Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_RED" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.7431 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_79" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_80" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Red" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_81" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_RED" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.7431 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_82" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_83" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_84" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.8295 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Blue" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_PUR" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.7892 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#D900D9", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_85" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_PUR" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.7892 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_86" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.8736 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jammed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_87" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.8736 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_88" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.8752 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Amber" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_89" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_AMB" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.8815 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_OFF_BLU" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.8354 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_90" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.9209 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_91" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.9209 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_92" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.9225 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Green" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_93" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.8752 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_GRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.9276 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_OFF_AMB" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.8815 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "ON_EIP" + }, + "position": { + "height": 0.0308, + "width": 0.0276, + "x": 0.3862, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Label_94" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.4228, + "y": 0.9231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "OFF_EIP" + }, + "position": { + "height": 0.0308, + "width": 0.0276, + "x": 0.3862, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Estop" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5772, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Label_38" + }, + "position": { + "height": 0.0462, + "width": 0.0628, + "x": 0.6014, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Actuated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Estop_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5772, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Encoder" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.4979, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "Label_54" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.5207, + "y": 0.8769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_95" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.5207, + "y": 0.9231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Encoder_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.4979, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "Scanner" + }, + "position": { + "height": 0.0231, + "width": 0.0207, + "x": 0.609, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "Label_50" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6355, + "y": 0.9192 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Scanner_0" + }, + "position": { + "height": 0.0231, + "width": 0.0207, + "x": 0.609, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "PushButton" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#CFC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_58" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#FCC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_59" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.6559, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#BBB" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_96" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_97" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.6559, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_2" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#BBB" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_3" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#FCC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_98" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#CFC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_99" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_100" + }, + "position": { + "height": 0.0462, + "width": 0.1083, + "x": 0.6559, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_101" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_5" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#FFF" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_6" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_7" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_102" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.6559, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_8" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#FFF" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_103" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.5317, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_9" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_104" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.4076, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_10" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PhotoEye" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_45" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.3808 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Blocked" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_0" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#000", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_60" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.4269 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Disabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_1" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_61" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.48, + "y": 0.4731 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Jammed / Clear" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_2" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PhotoEye_3" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.4317, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_62" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.48, + "y": 0.5192 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Jammed / Blocked" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_4" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.4317, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#000", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PhotoEye_5" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.6369 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_65" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4076, + "y": 0.6754 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Disconnect" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.6831 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_68" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4352, + "y": 0.7215 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Faulted / OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.7292 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "VFD_2" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.411, + "y": 0.7292 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_69" + }, + "position": { + "height": 0.0462, + "width": 0.1828, + "x": 0.4352, + "y": 0.7677 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Faulted / Disconnect" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_3" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.411, + "y": 0.7754 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "VFD_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.7754 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_105" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.5231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Manual / Maintenance Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_18" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#AC5F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_19" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#D900D9", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_70" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Anti-Gridlock Prevention Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "LimitSwitch" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 0.0369, + "width": 0.0414, + "x": 0.7062, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "Label_48" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.6883, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "MCP Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_49" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.7541, + "y": 0.88 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_51" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.7541, + "y": 0.9262 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "MCP " + }, + "position": { + "height": 0.0369, + "width": 0.0414, + "x": 0.7062, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "Label_71" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.6834, + "y": 0.526 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Gaylord Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_72" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.7862, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Divert Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_106" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Retracted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_107" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.1141 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Extended" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle_0" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.1234 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + }, + "status": { + "color": "#0F0", + "isExtended": true, + "isRetracted": false + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "Label_108" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.1618 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle_1" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + }, + "status": { + "color": "#F00" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "Label_110" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Inactive" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_111" + }, + "position": { + "height": 0.0462, + "width": 0.1379, + "x": 0.6676, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Prox Switch Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_112" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Actuated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LimitSwitch_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "color": [ + "#0F0" + ], + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "Label_115" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.5753 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Not Present" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.583 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#AAA" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_118" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.6214 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Present" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.6291 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#AAA", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_119" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.6676 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Present / Enabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_5" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.6753 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#0F0", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_121" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.7138 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_7" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.7215 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#00F", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "LimitSwitch_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.4387 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "color": [ + "#F00" + ], + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "Label_113" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.431 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_114" + }, + "position": { + "height": 0.0462, + "width": 0.1814, + "x": 0.8139, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "left", + "textDecoration": "underline" + }, + "text": "Nav Button Icons (Footer)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Alarm_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.3462 + }, + "props": { + "color": "#FFF", + "path": "material/notifications_active", + "style": { + "backgroundColor": "#000000" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_116" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "General Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Emergency_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.3951 + }, + "props": { + "color": "#FFF", + "path": "material/all_out", + "style": { + "backgroundColor": "#FF0000" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_117" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.3874 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Estop Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_120" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.4363 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jam Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Jam_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.444 + }, + "props": { + "color": "#FFF", + "path": "material/skip_next", + "style": { + "backgroundColor": "#FF8C00" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_122" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.4852 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Full_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.4929 + }, + "props": { + "color": "#FFF", + "path": "material/skip_next", + "style": { + "backgroundColor": "#0000FF" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Manual_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.5418 + }, + "props": { + "color": "#FFF", + "path": "material/build", + "style": { + "backgroundColor": "#AC5F00" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_123" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.5341 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Manual Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_109" + }, + "position": { + "height": 0.0462, + "width": 0.1228, + "x": 0.2269, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Gridlock Prevention " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_BLU" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.8354 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_124" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_125" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Purple" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_126" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.9225 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_GRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.9276 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + } + ], + "meta": { + "name": "Legend" + }, + "props": { + "mode": "percent", + "style": { + "classes": "window", + "min-width": 1450 + } + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "script": "\tif len(self.props.selectionData) \u003d\u003d 1:\n\t\tselected \u003d self.props.selectionData[0]\n\t\tvalue \u003d self.props.selection[0]\n\t\t# Check if valid file:\n\t\tif selected.value !\u003d \"\":\n\t\t\t# Is file, so update viewer:\n\t\t\tself.getSibling(\"DocumentViewer\").props.src \u003d \"/documents/\"+selected.value\n\t\t\t# Update header:\n\t\t\titem \u003d self.props\n\t\t\tfor part in selected.itemPath.split(\"/\"):\n\t\t\t\titem \u003d item.items[int(part)]\n\t\t\tself.getSibling(\"Header\").props.text \u003d item.label\n\t\telse:\n\t\t\t# Isn\u0027t file, so must be directory. Expand it:\n\t\t\titem \u003d self.props\n\t\t\tfor part in selected.itemPath.split(\"/\"):\n\t\t\t\titem \u003d item.items[int(part)]\n\t\t\t# Expand it:\n\t\t\titem.expanded \u003d not item.expanded" + }, + "scope": "G", + "type": "script" + } + }, + "system": { + "onStartup": { + "config": { + "script": "\tself.refreshList()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Tree" + }, + "position": { + "height": "calc(100% - 95px)", + "width": 300, + "y": 25 + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "expression": "if({../Button_Background.meta.visible},\r\n\t\"calc(100% - 95px)\",\r\n\t\"calc(100% - 25px)\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.style.borderBottomWidth": { + "binding": { + "config": { + "expression": "if({../Button_Background.meta.visible},\r\n\t2,\r\n\t0\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "path": "material/folder" + }, + "empty": { + "path": "material/stop" + }, + "expanded": { + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "path": "material/arrow_right" + }, + "expanded": { + "path": "material/arrow_drop_down" + } + } + }, + "style": { + "backgroundColor": "#FFF", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "user-select": "none" + } + }, + "scripts": { + "customMethods": [ + { + "name": "refreshList", + "params": [], + "script": "\tself.props.items \u003d documents.getDocuments()\n\tif self.getSibling(\"DocumentViewer\").props.src \u003d\u003d \"\":\n\t\tfor i, item in enumerate(self.props.items):\n\t\t\tif item.label \u003d\u003d \"Description of Operations.pdf\":\n\t\t\t\tself.getSibling(\"DocumentViewer\").props.src \u003d \"/documents/Description of Operations.pdf\"\n\t\t\t\tself.getSibling(\"Header\").props.text \u003d item.label\n\t\t\t\tself.props.selection \u003d [str(i)]\n\t\t\t\tbreak" + }, + { + "name": "getPath", + "params": [ + "path" + ], + "script": "\timport os\n\t\n\tpaths \u003d path.split(\"/\")\n\tfullPath \u003d \"\"\n\titems \u003d self.props.items\n\tfor i in range(len(paths)):\n\t\tpath \u003d int(paths[i])\n\t\tif len(items) \u003e path:\n\t\t\tfullPath \u003d os.path.join(fullPath, items[path].label)\n\t\t\titems \u003d items[path].items\n\t\n\treturn fullPath" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "custom-documents-refreshlist", + "pageScope": true, + "script": "\tself.refreshList()", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.tree" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 25, + "width": 300 + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "Documents" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DocumentViewer" + }, + "position": { + "height": "calc(100% - 25px)", + "width": "calc(100% - 300px)", + "x": 300, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{this.props.src} !\u003d \"\" \u0026\u0026 {this.props.src} !\u003d None" + }, + "type": "expr" + } + } + }, + "props": { + "allowFullScreen": true + }, + "type": "ia.display.iframe" + }, + { + "meta": { + "name": "Header" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 300 + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverflow": "ellipsis", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Button_Background" + }, + "position": { + "height": 70, + "width": 300, + "y": "calc(100% - 70px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "backgroundColor": "#AAA", + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "color": "#FFF", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "draggable": false, + "id": "sOoyBhnt", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Upload Custom Document", + "type": "open", + "viewPath": "Popups/CustomDocuments/PDFUpload" + }, + "enabled": false, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tif len(data) \u003d\u003d 0 or (len(data) \u003d\u003d 1 and data[0].value \u003d\u003d \"\"):\n\t\tid \u003d \"sOoyBhnt\"\n\t\tview \u003d \"Popups/CustomDocuments/PDFUpload\"\n\t\ttitle \u003d \"Upload Custom Document\"\n\t\tparams \u003d {\n\t\t\t\"parentFolder\": self.getSibling(\"Tree\").getPath(data[0].itemPath) if len(data) \u003d\u003d 1 else \"\"\n\t\t}\n\t\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Button_UploadDocument" + }, + "position": { + "height": 32, + "width": 146, + "x": 2, + "y": "calc(100% - 33px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selectionData" + }, + "transforms": [ + { + "code": "\treturn len(value) \u003d\u003d 0 or (len(value) \u003d\u003d 1 and value[0].value \u003d\u003d \"\")", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Upload" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tfilenames \u003d [self.getSibling(\"Tree\").getPath(data[i].itemPath) for i in range(len(data))]\n\tid \u003d \"YCx5ripz\"\n\tview \u003d \"Popups/CustomDocuments/DeleteConfirmation\"\n\ttitle \u003d \"Delete Confirmation\"\n\tparams \u003d {\n\t\t\"filenames\": filenames\n\t}\n\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DeleteDocument" + }, + "position": { + "height": 32, + "width": 146, + "x": 150, + "y": "calc(100% - 33px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "enabled": false, + "style": { + "classes": "Buttons/Grey" + }, + "text": "Delete" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tif len(data) \u003d\u003d 0 or (len(data) \u003d\u003d 1 and data[0].value \u003d\u003d \"\"):\n\t\tid \u003d \"NU5O9skq\"\n\t\tview \u003d \"Popups/CustomDocuments/CreateFolder\"\n\t\ttitle \u003d \"Create Documents Folder\"\n\t\tparams \u003d {\n\t\t\t\"parentFolder\": self.getSibling(\"Tree\").getPath(data[0].itemPath) if len(data) \u003d\u003d 1 else \"\"\n\t\t}\n\t\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_CreateFolder" + }, + "position": { + "height": 32, + "width": 294, + "x": 2, + "y": "calc(100% - 68px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selectionData" + }, + "transforms": [ + { + "code": "\treturn len(value) \u003d\u003d 0 or (len(value) \u003d\u003d 1 and value[0].value \u003d\u003d \"\")", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Create Folder" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.getSibling(\"Tree\").props.selection \u003d []" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_UnselectAll" + }, + "position": { + "height": 20, + "width": 95, + "x": 202, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "fontSize": "11px" + }, + "text": "Unselect All" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Documents" + }, + "position": { + "tabIndex": 1 + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 250 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Legend", + "Documents" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": 0, + "y": 0 + }, + "props": { + "style": { + "classes": "window", + "min-width": 1450 + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 b/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 new file mode 100644 index 00000000..fed42469 --- /dev/null +++ b/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 @@ -0,0 +1,706 @@ +{ + "custom": { + "class": 2 + }, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "0 rows" + }, + "propConfig": { + "custom.class": { + "binding": { + "config": { + "path": "view.params.classDropdownValue" + }, + "transforms": [ + { + "code": "\tvalue \u003d list(value)\n\tif \"Message\" in value:\n\t\treturn 0\n\telif \"Warning\" in value:\n\t\treturn 1\n\telif \"Error\" in value:\n\t\treturn 2\n\telse:\n\t\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.classDropdownValue[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "class": "{view.custom.class}", + "endDate": "{session.custom.timewidget.endDate}", + "priority": "if({view.custom.class} \u003e 0, 1, 0)", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Alarms/History" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + }, + { + "code": "\toutput_json \u003d []\n\t# Transform dataset into json:\n\tfor row in range(value.getRowCount()):\n\t\trow_object \u003d {\"value\": {}}\n\t\t# Populate row values:\n\t\tfor col in range(value.getColumnCount()):\n\t\t\trow_object[\"value\"][value.getColumnName(col)] \u003d value.getValueAt(row, col)\n\t\t\t# Check if endtime isn\u0027t reached:\n\t\t\tif value.getColumnName(col) \u003d\u003d \u0027endtime\u0027 and value.getValueAt(row, col) in [None, \"\"]:\n\t\t\t\trow_object[\u0027style\u0027] \u003d {\"background\": \"#F4B084\"}\n\t\t# Append to json output:\n\t\toutput_json.append(row_object)\n\t# Return as json:\n\treturn output_json", + "type": "script" + } + ], + "type": "query" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "starttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "endtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Alarm History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 b/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 new file mode 100644 index 00000000..a8988884 --- /dev/null +++ b/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 @@ -0,0 +1,43 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + /* PPH Data */ + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner, + /* Problem Solve Data */ + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + /* Sorter Error Data */ + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +), DATA AS ( +SELECT + total, + /* PPH: */ + ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph, + /* Problem Solve Percents: */ + no_read+no_code+multi_label AS scanner, + /* Sorter Error Percents: */ + gap_err+div_fail+dest_none+lost AS sorter +FROM SORTERS +WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW) +) +SELECT + MAX(total_pph) AS total_pph, + /* Problem Solve Percents: */ + ROUND(SUM(scanner)/SUM(total), 4) AS scanner, + /* Sorter Error Percents: */ + ROUND(SUM(sorter)/SUM(total), 4) AS sorter +FROM DATA; \ No newline at end of file diff --git a/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e b/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e new file mode 100644 index 00000000..9dcb2379 --- /dev/null +++ b/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e @@ -0,0 +1,291 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": false, + "rotate": false + }, + "status": { + "tagPath": "[default]MCP06/PS04/PS04_17CH" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotate": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 92, + "width": 94, + "x": 203.775, + "y": 154.5 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + }, + "persistent": false + } + }, + "props": { + "path": "Templates/Areas/RRChute", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 b/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 new file mode 100644 index 00000000..9cd0fca2 --- /dev/null +++ b/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 @@ -0,0 +1,297 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "PE1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "type": "reflector" + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PhotoEye" + }, + "position": { + "height": 30, + "width": 102, + "x": 48.5, + "y": 20 + }, + "propConfig": { + "props.config.type": { + "binding": { + "config": { + "path": "view.params.props.config.type" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 b/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 new file mode 100644 index 00000000..40b8cdfa --- /dev/null +++ b/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 @@ -0,0 +1,193 @@ +{ + "custom": {}, + "params": { + "parentFolder": "" + }, + "propConfig": { + "params.parentFolder": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 150px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 60 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "struct": { + "folderName": "{../TextField.props.text}", + "parentFolder": "{view.params.parentFolder}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\timport os\n\t\n\ttext \u003d \"Are you sure you would like to create the following folder:\\n\"\n\ttext +\u003d \"\\n* \"+os.path.join(value.parentFolder, value.folderName)\n\treturn text", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport os\n\t\n\tparentFolder \u003d self.view.params.parentFolder\n\tfolderName \u003d self.getSibling(\"TextField\").props.text\n\tdocuments.createFolder(os.path.join(parentFolder, folderName))\n\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../TextField.props.text" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d \"\":\n\t\treturn False\n\t# Only support alphanumeric folder names:\n\treturn \"\".join([c for c in value if c.isalpha() or c.isdigit() or c\u003d\u003d\u0027 \u0027]).strip() \u003d\u003d value", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TextField" + }, + "position": { + "height": 32, + "width": "calc(100% - 125px)", + "x": 115, + "y": 10 + }, + "props": { + "deferUpdates": false + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 32, + "width": 110, + "y": 10 + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Folder Name:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_BadFolderName" + }, + "position": { + "height": 12, + "width": 250, + "x": 120, + "y": 42 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "!{../Button_Yes.props.enabled}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "red", + "fontSize": "12px" + }, + "text": "* Empty or contains invalid characters" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad b/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad new file mode 100644 index 00000000..8654f2c3 --- /dev/null +++ b/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1993, + "width": 4243 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Sorter" + }, + "position": { + "height": 1973, + "width": 4223, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 170, + "y": 720 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(3)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 3760, + "y": 1840 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(3)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 b/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 new file mode 100644 index 00000000..580c8f0a --- /dev/null +++ b/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 @@ -0,0 +1,578 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "chuteNum": "", + "isClickable": true, + "mirror": false, + "tagPath": "" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.chuteNum": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 115, + "width": 95 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 48, + "rotate": { + "anchor": "0 0", + "angle": -90 + }, + "width": 79, + "x": 21, + "y": 115 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.config.showLabel": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Parameters.LabelFull" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1) translateY(-100%)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 82 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GS1_ENABLE" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GS1_RESTART" + }, + "position": { + "height": 20, + "width": 20, + "x": 40, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 99 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 15, + "width": "100%" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.chuteNum" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontSize": "15px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FIO1" + }, + "position": { + "height": 15, + "rotate": { + "angle": "-90deg" + }, + "width": 30, + "x": -7, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.eip" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c b/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c new file mode 100644 index 00000000..d4c9a152 --- /dev/null +++ b/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c @@ -0,0 +1,267 @@ +{ + "custom": { + "disconnected": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Normal" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "type": "property" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 30, + "width": 41 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "MCM", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_dpm_mcm" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 b/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 new file mode 100644 index 00000000..16de430d --- /dev/null +++ b/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(255,0,0,1) 0%, rgba(245,0,0,1) 70%, rgba(208,0,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(255,0,0,1) 0%, rgba(245,0,0,1) 70%, rgba(208,0,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,0,0,1) 0%, rgba(208,0,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 b/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 new file mode 100644 index 00000000..e5f99826 --- /dev/null +++ b/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007EFCB3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 b/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 new file mode 100644 index 00000000..590ba7ed --- /dev/null +++ b/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 @@ -0,0 +1,5491 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1601, + "width": 949 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PRS03_01CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "-30deg" + }, + "width": 120, + "x": 813, + "y": 181 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 108, + "x": 907, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 148, + "x": 800, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 408, + "x": 653, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 430, + "x": 507, + "y": 41 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 622, + "x": 58, + "y": 60.8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 600, + "x": 58, + "y": 681 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 501, + "x": 112, + "y": 1601 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06NP" + }, + "position": { + "height": 34, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 336, + "x": 118, + "y": 766 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PS2-6\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_01" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 112, + "y": 1101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_02" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 1042 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_03" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 973 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_04" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 904 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_05" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 835 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 766 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_07" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 697 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_08" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 628 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_09" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 559 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 490 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_14" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 671, + "x": 161, + "y": 430 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 202, + "x": 112, + "y": 421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_10" + }, + "position": { + "height": 11, + "rotate": { + "anchor": "0 0" + }, + "width": 112, + "x": 151, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_10A" + }, + "position": { + "height": 11, + "rotate": { + "anchor": "0 0" + }, + "width": 112, + "x": 151, + "y": 189 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10A/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_11" + }, + "position": { + "height": 20, + "width": 18, + "x": 262, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_12" + }, + "position": { + "height": 20, + "width": 18, + "x": 279, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_13" + }, + "position": { + "height": 20, + "width": 18, + "x": 296, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_14" + }, + "position": { + "height": 20, + "width": 18, + "x": 313, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_15" + }, + "position": { + "height": 20, + "width": 18, + "x": 330, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_16" + }, + "position": { + "height": 20, + "width": 18, + "x": 347, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_17" + }, + "position": { + "height": 20, + "width": 118, + "x": 364, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_18" + }, + "position": { + "height": 20, + "width": 224, + "x": 481, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 255, + "x": 523, + "y": 302 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_12" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 444, + "x": 250, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_13" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 633, + "x": 250, + "y": 763 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_15" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 80, + "x": 211, + "y": 1435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "-30deg" + }, + "width": 40, + "x": 905, + "y": 105 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20, + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS03_03CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "-120deg" + }, + "width": 40, + "x": 906, + "y": 107 + }, + "props": { + "config": { + "angle": 60, + "conveyorWidth": 20, + "enableHighlight": false, + "isClickable": false, + "side": "left", + "type": "chute" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PRS3-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS04_02PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 78, + "y": 61 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_02PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS04_05CHNP" + }, + "position": { + "height": 75, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 75, + "x": 113, + "y": 1280 + }, + "props": { + "config": { + "conveyorWidth": 20, + "enableHighlight": false, + "isClickable": false, + "side": "left" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PRS4-5CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PS02_09PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 112, + "y": 220 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_09PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_11PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 270, + "y": 322 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_11PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_14CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 250, + "y": 1395 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RE3-14CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "MCP11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 50, + "x": 160, + "y": 1223 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/MCP11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "MCP21" + }, + "position": { + "height": 20, + "width": 50, + "x": 595, + "y": 120 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/MCP21/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PRS03_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 871, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS03_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 684, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 484, + "y": 3 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_02PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 42 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_02PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 560 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 1209 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 133, + "y": 1275 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 1060 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 1001 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 932 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 863 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 794 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 725 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 657 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 586 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 85, + "y": 530 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 445 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 162, + "y": 1060 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 133, + "y": 221 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_09PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 135, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_09PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_10A_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 201 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10A/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 261, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 278, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 295, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 312, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 329, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_16_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 346, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_17_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 363, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_18_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 671, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 487, + "y": 265 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_11PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_11PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 747 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 1327 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 179, + "y": 1398 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_09_ENC" + }, + "position": { + "height": 16, + "rotate": { + "angle": "PS02_06_SG01_09_ENC1" + }, + "width": 16, + "x": 95, + "y": 495 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/ENC/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "PRS03_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 701, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 701, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 779, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 779, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS04_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 608 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS04_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 608 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1104 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_05_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1124 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 340 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 340 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_10_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 388, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_10_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 388, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 503 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 442 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 739, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 758, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 739, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 758, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 648 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 648 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_04_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 1257 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1144 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1145 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 380 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 380 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_10_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 159 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 426, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 445, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 426, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 445, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 463 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 482 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_13_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_13_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01A_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 506, + "y": 159 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01A/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_04_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 812, + "y": 51 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS03_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 670, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 100, + "y": 42 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 59, + "y": 607 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 22, + "y": 607 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 133, + "y": 1274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 96, + "y": 1294 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_08_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 133, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_08_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 96, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_17_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 413, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_17_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 382, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_18_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 658, + "y": 201 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_10_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 357, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_10_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 326, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_12_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 251, + "y": 452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_13_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 214, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_15_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 148, + "y": 1399 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS03_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 20 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 35 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 100, + "y": 4 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "y": 639 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 80, + "y": 644 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 80, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_04_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 1240 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 1140 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 1145 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 1160 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN3_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN3/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 341 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN3_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN3/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_10_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 189, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_10_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 409, + "y": 265 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_10_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 409, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_12_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 192, + "y": 463 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_12_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_13_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 1338 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_13_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01A_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 489, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01A/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 67, + "x": 823, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 915, + "y": 100 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 811, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_04_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 898, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 618, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_06_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 651, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 99, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 28, + "y": 669 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 68, + "y": 72 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 28, + "y": 1229 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 142, + "y": 1195 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 1357 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 1589 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_07_PE1" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 629.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_09_PE1" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 516.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_09_PE2" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 533.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 237 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_10_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 170, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_11_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 273, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_12_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 290, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_13_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 307, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_14_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 324, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_15_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 341, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_16_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 366, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_18_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 705, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_17_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 377, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_10_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 270, + "y": 312 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_12_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 260, + "y": 363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_13_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 260, + "y": 1394 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_13_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 220, + "y": 1296 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_15_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 147, + "y": 1405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_15_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 208, + "y": 1405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE3Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 152, + "y": 1440 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "RE3" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RE3Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 152, + "y": 1440 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_RE/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "PRS4Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 55, + "x": 42, + "y": 1360 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "PRS4" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PRS4Label_Tooltip" + }, + "position": { + "height": 25, + "width": 55, + "x": 42, + "y": 1360 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_PRS/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SGINLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 60, + "x": 152, + "y": 1240 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SG IN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SGINLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 60, + "x": 152, + "y": 1240 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Singulator_Input/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SGOUTLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 80, + "x": 152, + "y": 230 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SG OUT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SGOUTLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 80, + "x": 152, + "y": 230 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Singulator_Output/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "PS02_16_TPE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 355, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 b/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 new file mode 100644 index 00000000..7c76b7b6 --- /dev/null +++ b/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 @@ -0,0 +1,62 @@ +WITH range_alarm_events AS ( + SELECT *, + /* Get the last time this event was active within the given time range*/ + ( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + LIMIT 1 + ) AS endtime + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter out system events */ + AND eventflags & 1 != 1 + /* Filter priority */ + AND priority >= :priority + /* Filter for Active events */ + AND eventtype = 0 + ORDER BY eventtime DESC + LIMIT 2000 +), range_alarm_events2 AS ( + SELECT *, + LEAST(COALESCE(endtime, NOW()), :endDate) AS endtime_est, /* Clamp to end of time range if clear event is after end time */ + TIMESTAMPDIFF(SECOND, eventtime, LEAST(COALESCE(endtime, NOW()), :endDate)) AS duration + FROM range_alarm_events +) +SELECT e.id, + e.eventtime AS starttime, e.endtime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve data */ + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM range_alarm_events2 e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +WHERE CASE + WHEN dclass.strvalue = "Error" THEN 2 + WHEN dclass.strvalue = "Warning" THEN 1 + WHEN dclass.strvalue = "Message" THEN 0 + END >= :class; \ No newline at end of file diff --git a/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 b/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 new file mode 100644 index 00000000..35f76b89 --- /dev/null +++ b/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 @@ -0,0 +1,1030 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 60, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onDexClick": { + "config": { + "script": "\twindow \u003d \"Popups/DeviceWrapper\"\n\tparams \u003d {\n\t\t\"deviceType\": event.type.split(\".\")[-1],\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\t# Change device type if available:\n\ttry:\n\t\ttagPath \u003d \"[default]\"+params[\"props\"].status.tagPath+\"/Parameters.DeviceType\"\n\t\tvalue \u003d system.tag.readBlocking([tagPath])[0]\n\t\tif value.quality.isGood():\n\t\t\tparams[\"deviceType\"] \u003d value.value\n\texcept:\n\t\tpass\n\t# Open window, if one is specified:\n\tid \u003d event.props.status.tagPath\n\ttitle \u003d utils.extractName(event.props.status)\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\telse:\n\t\tsystem.perspective.openPopup(id, window, params, title, resizable\u003dTrue)" + }, + "scope": "G", + "type": "script" + }, + "onDexComponentClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"type\": event.type,\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\tsystem.perspective.openPopup(event.meta.name, \"Windows/Popup/Conveyor\", params)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "DexManager" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.config": { + "binding": { + "config": { + "path": "session.custom.dexmanager.config" + }, + "type": "property" + } + }, + "props.highlight": { + "binding": { + "config": { + "path": "session.custom.dexmanager.highlight" + }, + "enabled": false, + "type": "property" + } + }, + "props.override": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.data},\r\n\t0\r\n)" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d 0:\n\t\treturn {}\n\telse:\n\t\tdata \u003d value\n\t\taggregate \u003d {}\n\t\taggregate_conv \u003d {}\n\t\tmaxCount \u003d 0\n\t\t# Perform aggregates:\n\t\tfor r in range(data.getRowCount()):\n\t\t\tdevice \u003d data.getValueAt(r, \"device\")\n\t\t\tcount \u003d data.getValueAt(r, \"count\")\n\t\t\t# Add count to device:\n\t\t\taggregate[device] \u003d aggregate[device] + count if device in aggregate else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate[device] if aggregate[device] \u003e maxCount else maxCount\n\t\t\t# Retrieve conveyor name:\n\t\t\tconv \u003d device.split(\".\")[0]\n\t\t\t# Add count to conveyor:\n\t\t\taggregate_conv[conv] \u003d aggregate_conv[conv] + count if conv in aggregate_conv else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate_conv[conv] if aggregate_conv[conv] \u003e maxCount else maxCount\n\t\t# Convert to overrides:\n\t\tresult \u003d {}\n\t\tfor k, v in aggregate.items():\n\t\t\tresult[k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\tfor k, v in aggregate_conv.items():\n\t\t\tresult[\"conveyor_\"+k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\treturn result", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.overrideAll.config.enableHighlight": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "enabled": false, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.config.isClickable": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.color": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.tooltip": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.show": { + "binding": { + "config": { + "struct": { + "heatmapDevices": "{session.custom.heatmapSettings.devices}", + "heatmapEnabled": "{session.custom.heatmapSettings.enabled}", + "show": "{session.custom.dexmanager.show}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnabled:\n\t\tdevices \u003d [v.value for v in value.heatmapDevices]\n\t\treturn {\n\t\t\t\"Beacons\": \"Beacons\" in devices,\n\t\t\t\"ConveyorLabels\": True,\n\t\t\t\"ConveyorPatterns\": False,\n\t\t\t\"Conveyors\": True,\n\t\t\t\"DivertPaddles\": True,\n\t\t\t\"EIPs\": \"EIPs\" in devices,\n\t\t\t\"Encoders\": \"Encoders\" in devices,\n\t\t\t\"Estops\": \"Estops\" in devices,\n\t\t\t\"Gaylords\": True,\n\t\t\t\"LimitSwitches\": \"LimitSwitches\" in devices,\n\t\t\t\"MCPs\": \"MCPs\" in devices,\n\t\t\t\"PhotoEyes\": \"PhotoEyes\" in devices,\n\t\t\t\"PushButtons\": \"PushButtons\" in devices,\n\t\t\t\"Scanners\": \"Scanners\" in devices,\n\t\t\t\"VFDs\": \"VFDs\" in devices\n\t\t}\n\telse:\n\t\treturn value.show#{k: v.value for k, v in value.show.iteritems()}", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "overrideAll": { + "config": { + "enableHighlight": null + }, + "status": {} + } + }, + "type": "dex.controller.manager" + }, + { + "meta": { + "name": "Label_Date" + }, + "position": { + "height": 28, + "width": 90 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Date" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Time" + }, + "position": { + "height": 28, + "width": 90, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Time" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Site" + }, + "position": { + "height": 56, + "width": 90, + "x": 88 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "{[default]Gateway/Parameters.Customer}" + }, + "transforms": [ + { + "code": "\treturn system.project.getProjectName() + \" \" + value", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_IPAddr" + }, + "position": { + "height": 28, + "width": 120, + "x": 176 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "session.props.host" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.user.userName is not None:\n\t\t#system.perspective.print(\"Logout\")\n\t\tsystem.perspective.logout()\n\telse:\n\t\t#system.perspective.print(\"Login\")\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label_User" + }, + "position": { + "height": 28, + "width": 120, + "x": 176, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "coalesce({session.props.auth.user.userName}, \"LOGIN\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText", + "cursor": "pointer" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/help" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Legend" + }, + "position": { + "height": 52, + "width": 100, + "x": 988, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Help" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + }, + { + "config": { + "params": { + "view": "Windows/Graphics/Overview" + }, + "view": "Windows/GraphicsWrapper" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Nav_Overview" + }, + "position": { + "height": 52, + "width": 100, + "x": 356, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Overview" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "action": "Toggle", + "type": "Page" + }, + "scope": "C", + "type": "fullscreen" + } + } + }, + "meta": { + "name": "Nav_ToggleFull" + }, + "position": { + "height": 52, + "width": 100, + "x": 1090, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Fullscreen" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Status" + }, + "position": { + "height": 56, + "width": 60, + "x": 294 + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Status" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusColor" + }, + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "cx": 20, + "cy": 20, + "fill": {}, + "r": 19, + "stroke": { + "paint": "#000", + "width": 2 + }, + "style": {}, + "type": "circle" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 40 40" + }, + "type": "ia.shapes.svg" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_ActiveAlarms" + }, + "position": { + "height": 52, + "width": 100, + "x": 458, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active Alarms" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_HitList" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_History" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 29 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/statistics" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Statistics" + }, + "position": { + "height": 52, + "width": 100, + "x": 662, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Statistics" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/status" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Status" + }, + "position": { + "height": 52, + "width": 100, + "x": 764, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Status" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusTooltip" + }, + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/custom-reports" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_CustomReports" + }, + "position": { + "height": 52, + "width": 100, + "x": 1192, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Custom Reports" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/config" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Config" + }, + "position": { + "height": 52, + "width": 100, + "x": 1294, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Config", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Nav_AlarmHeatmap" + }, + "position": { + "height": 52, + "width": 100, + "x": 1498, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Alarm Heatmap", + "visible": true + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "LabelHeatMap", + "visible": false + }, + "position": { + "height": 56, + "width": 732, + "x": 458 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Heatmap Mode Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LabelFireAlarm", + "visible": null + }, + "position": { + "height": 56, + "width": 178 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/FireAlarm" + }, + "type": "tag" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({[default]Gateway/FireAlarm},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Building Fire Alarm" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/commission" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Commission" + }, + "position": { + "height": 52, + "width": 100, + "x": 1396, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Commission", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/cameras" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_JamCameras" + }, + "position": { + "height": 52, + "width": 100, + "x": 866, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Jam Cameras" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/autStand" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "autStand" + }, + "position": { + "height": 52, + "width": 117, + "x": 1599.67, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Navigate to autStand" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-bottom": "2px solid #000", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 b/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 new file mode 100644 index 00000000..fb1801e0 --- /dev/null +++ b/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#808080" + } + } +} \ No newline at end of file diff --git a/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 b/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 new file mode 100644 index 00000000..6c665e31 --- /dev/null +++ b/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 306, + "width": 948 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Problem_Solve" + }, + "position": { + "height": 286, + "width": 928, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Problem_Solve", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 50, + "y": 247 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 760, + "y": 247 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 b/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 new file mode 100644 index 00000000..9dce5720 --- /dev/null +++ b/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS lane, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "CH%" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + lane, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd b/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd new file mode 100644 index 00000000..0d972b24 --- /dev/null +++ b/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd @@ -0,0 +1,328 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "Conveyor" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isManual": false, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 30, + "width": 150, + "x": 20, + "y": 20 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Conveyor\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.config.showLabel": { + "binding": { + "config": { + "path": "view.params.props.config.showLabel" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.config.type": { + "binding": { + "config": { + "path": "view.params.props.config.type" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 b/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 new file mode 100644 index 00000000..3c5cdd11 --- /dev/null +++ b/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 @@ -0,0 +1,38 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + sorter, + induct, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +), SORTERS AS ( + SELECT + start_timestamp, + sorter, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter, start_timestamp +) +SELECT + I.start_timestamp AS time, + hour, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + I.total AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE induct=:induct AND I.sorter=S.sorter AND I.start_timestamp=S.start_timestamp +ORDER BY I.start_timestamp ASC; \ No newline at end of file diff --git a/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 b/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 new file mode 100644 index 00000000..f14bb253 --- /dev/null +++ b/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SpiralLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"CH-2%\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Spiral Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 b/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 new file mode 100644 index 00000000..c9d94602 --- /dev/null +++ b/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFDC00" + } + } +} \ No newline at end of file diff --git a/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 b/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 new file mode 100644 index 00000000..d9655407 --- /dev/null +++ b/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 @@ -0,0 +1,332 @@ +{ + "custom": {}, + "params": { + "titleExtra": "5 rows", + "usesTimewidget": false + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "false" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SpiralStatus" + }, + "position": { + "height": "100%", + "width": "50%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]SpiralStatus" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "status", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Count (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "percent", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Percentage (%)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.##%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Spiral Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "PieChart" + }, + "position": { + "height": "100%", + "width": "50%", + "x": "50%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]SpiralStatus" + }, + "type": "tag" + } + } + }, + "props": { + "colors": [ + "limegreen", + "#FF0", + "#00F", + "#AAA", + "#FF8C00", + "#F00", + "#808080" + ], + "style": { + "borderLeftColor": "#000", + "borderLeftStyle": "solid", + "borderLeftWidth": 2 + }, + "threeDimensional": true, + "title": "Spiral Status" + }, + "type": "ia.chart.pie" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa b/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa new file mode 100644 index 00000000..08179f1c --- /dev/null +++ b/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa @@ -0,0 +1,773 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "mirror": false, + "rotation": 0, + "tagPath": "[default]MCP03/CH_20105/CH_20105" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.rotation": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 60, + "width": 85 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Gaylord_16" + }, + "position": { + "height": 31, + "width": 31, + "x": 54, + "y": 29 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": {} + }, + "type": "dex.display.gaylord" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "SpiralChute_241" + }, + "position": { + "height": 60, + "width": 60 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": {} + }, + "type": "dex.display.spiralchute" + }, + { + "meta": { + "name": "GS1" + }, + "position": { + "height": 13, + "width": 13, + "x": 72, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "BCN1_GRN", + "visible": false + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "expression": "if({view.params.rotation} \u003d 180, 0, 18)" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61, + "y": 9 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Ch_Full_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "315deg" + }, + "width": 30, + "x": 1, + "y": 53 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Ch_Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RS1" + }, + "position": { + "height": 13, + "width": 13, + "x": 72 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GLL_Open_PX" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 72, + "y": 49 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Open_PX/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PX" + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "GLL_Closed_PX" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61, + "y": 49 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Closed_PX/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PX" + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "expression": "if({view.params.rotation} \u003d 180, 18, 0)" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Ch_Half_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": 135 + }, + "width": 30, + "x": 58, + "y": 6 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Ch_Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GLL_Cart_Full_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 16, + "x": 81, + "y": 47 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Cart_Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GLL_Present_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 16, + "x": 68, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Present_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Ch_Jam_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": 225 + }, + "width": 30, + "x": 53, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH_Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FIO" + }, + "position": { + "height": 10, + "rotate": { + "angle": 270 + }, + "width": 20, + "x": -5, + "y": 5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Cart_Present_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 16, + "x": 75, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Cart_Present_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"SpiralChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"spiralchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"rotation\": self.view.params.rotation\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 b/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 new file mode 100644 index 00000000..74c51aa7 --- /dev/null +++ b/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 @@ -0,0 +1,4 @@ +SELECT DISTINCT lane_id +FROM pe_history +WHERE lane_id LIKE "CH%" +ORDER BY lane_id; \ No newline at end of file diff --git a/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a b/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a new file mode 100644 index 00000000..397564ca --- /dev/null +++ b/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a @@ -0,0 +1,549 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "MCP" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 180, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 40, + "width": 100, + "x": 50, + "y": 15 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027MCP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CPU_Switch" + }, + "position": { + "height": 40, + "rotate": { + "angle": "135deg" + }, + "width": 40, + "x": 80, + "y": 100 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU.jsonValues" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\ttry:\n\t\tif value.Key_Run:\n\t\t\treturn \"0deg\"\n\t\telif value.Key_Rem:\n\t\t\treturn \"45deg\"\n\t\telif value.Key_Pgm:\n\t\t\treturn \"90deg\"\n\t\telse:\n\t\t\treturn \"135deg\"\n\texcept:\n\t\treturn \"135deg\"", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.elements[0].d": { + "binding": { + "config": { + "expression": "if({this.position.rotate.angle}\u003d\"135deg\",\r\n\t\"M40,40L0,0\",\r\n\t\"M40,40L0,0H20M0,0V20\"\r\n)" + }, + "overlayOptOut": true, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "elements": [ + { + "d": "M40,40L0,0", + "fill": { + "paint": "none" + }, + "stroke": { + "linecap": "square", + "paint": "#000", + "width": 5 + }, + "type": "path" + } + ], + "viewBox": "0 0 41 41" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 40, + "x": 40, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Run" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "RUN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 40, + "x": 80, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Rem" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "REM" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 20, + "width": 40, + "x": 120, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Pgm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "PGM" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf b/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf new file mode 100644 index 00000000..fa1c77fc --- /dev/null +++ b/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 17.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 b/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 new file mode 100644 index 00000000..fd816f35 --- /dev/null +++ b/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 @@ -0,0 +1,238 @@ +{ + "custom": {}, + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "", + "view": "" + }, + "propConfig": { + "params.enableTooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 80 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label}, {value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontSize": "12px", + "fontWeight": "bold", + "overflow": "hidden", + "paddingLeft": "5px", + "textOverflow": "ellipsis", + "textTransform": "uppercase", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{view.params.enableTooltip} \u0026\u0026 {view.params.tagPath} !\u003d \"\"" + }, + "type": "expr" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + } + ], + "events": { + "dom": { + "onMouseEnter": { + "config": { + "script": "\tself.session.custom.areaHover \u003d nav.getAreas(self.view.params.view)" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseLeave": { + "config": { + "script": "\tself.session.custom.areaHover \u003d []" + }, + "enabled": false, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 b/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 new file mode 100644 index 00000000..ea4de112 --- /dev/null +++ b/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#00CC00", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb b/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb new file mode 100644 index 00000000..26ff5815 --- /dev/null +++ b/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id=:lane + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 b/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 new file mode 100644 index 00000000..45d20bcc --- /dev/null +++ b/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 @@ -0,0 +1,19 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:%i:00") AS time, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id = :chute + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM INDUCTS; \ No newline at end of file diff --git a/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 b/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 new file mode 100644 index 00000000..e2287142 --- /dev/null +++ b/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 2.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 b/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 new file mode 100644 index 00000000..f4749ba2 --- /dev/null +++ b/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 @@ -0,0 +1,112 @@ +{ + "custom": {}, + "params": { + "filenames": [] + }, + "propConfig": { + "params.filenames": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 100px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 25 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.filenames" + }, + "transforms": [ + { + "code": "\ttext \u003d \"Are you sure you would like to delete the following config files:\\n\"\n\tfor val in value:\n\t\ttext +\u003d \"\\n* \"+val.value\n\treturn text", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfilenames \u003d [filename.value for filename in self.view.params.filenames]\n\terr \u003d reports.deleteConfigs(filenames)\n\tsystem.perspective.sendMessage(\"custom-reports-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 b/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 new file mode 100644 index 00000000..bf380672 --- /dev/null +++ b/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 @@ -0,0 +1,11 @@ +SELECT + sorter, + scanner, + COUNT(*) AS count, + ROUND(COUNT(*)*3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate)) AS rate, + ROUND(AVG(gap_leading/10), 1) AS avg_gap_leading, + ROUND(AVG(gap_trailing/10), 1) AS avg_gap_trailing, + ROUND(AVG(pkg_length/10), 1) AS avg_pkg_length +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +GROUP BY sorter, scanner; \ No newline at end of file diff --git a/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 b/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 new file mode 100644 index 00000000..11223177 --- /dev/null +++ b/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 @@ -0,0 +1,34 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner = :scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(good_read*60) AS good_read_pph, + ROUND(no_read*60) AS no_read_pph, + ROUND(no_code*60) AS no_code_pph, + ROUND(multi_label*60) AS multi_label_pph, + /* Percents: */ + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea b/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea new file mode 100644 index 00000000..d615c70f --- /dev/null +++ b/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#CCCCFF" + } + } +} \ No newline at end of file diff --git a/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 b/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 new file mode 100644 index 00000000..e01cc362 --- /dev/null +++ b/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 @@ -0,0 +1,318 @@ +{ + "custom": {}, + "params": { + "maxZoom": 8 + }, + "propConfig": { + "params.maxZoom": { + "binding": { + "config": { + "expression": "8" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 3200, + "width": 8300 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Smalls" + }, + "position": { + "height": 195, + "width": 755, + "x": 1213, + "y": 859 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/Smalls", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Unloads" + }, + "position": { + "height": 1727, + "width": 1707, + "x": 180, + "y": 55 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/Unloads", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastSpirals" + }, + "position": { + "height": 1500, + "width": 2281, + "x": 1800, + "y": 1576 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/EastSpirals", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestSpirals" + }, + "position": { + "height": 1479, + "width": 1937, + "x": 133, + "y": 1576 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/WestSpirals", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastLoops" + }, + "position": { + "height": 1698, + "width": 1942, + "x": 6209, + "y": 1398 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/EastLoops", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestLoops" + }, + "position": { + "height": 1787, + "width": 2072, + "x": 4272, + "y": 1309 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/WestLoops", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 5274, + "y": 2101 + }, + "props": { + "params": { + "label": "West Loops", + "tagPath": "", + "view": "Windows/Graphics/West_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UpperLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 6088, + "y": 2101 + }, + "props": { + "params": { + "label": "Upper Loops", + "tagPath": "", + "view": "Windows/Graphics/Upper_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestSpiralsNavButton" + }, + "position": { + "height": 40, + "width": 105, + "x": 262, + "y": 2540 + }, + "props": { + "params": { + "label": "West Spirals", + "tagPath": "", + "view": "Windows/Graphics/West_Spirals" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastSpiralsNavButton" + }, + "position": { + "height": 40, + "width": 105, + "x": 3257, + "y": 1380 + }, + "props": { + "params": { + "label": "East Spirals", + "tagPath": "", + "view": "Windows/Graphics/East_Spirals" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SmallsNavButton" + }, + "position": { + "height": 40, + "width": 80, + "x": 2200, + "y": 936 + }, + "props": { + "params": { + "label": "Smalls", + "tagPath": "", + "view": "Windows/Graphics/Smalls" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UnloadsNavButton" + }, + "position": { + "height": 40, + "width": 80, + "x": 843, + "y": 929 + }, + "props": { + "params": { + "label": "Unloads", + "tagPath": "", + "view": "Windows/Graphics/Unloads" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 7215, + "y": 2101 + }, + "props": { + "params": { + "label": "East Loops", + "tagPath": "", + "view": "Windows/Graphics/East_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a b/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a new file mode 100644 index 00000000..21a3e630 --- /dev/null +++ b/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ManualLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"AS%CH\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Manual Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 b/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 new file mode 100644 index 00000000..33955d92 --- /dev/null +++ b/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 @@ -0,0 +1,4 @@ +SELECT DISTINCT destination_act AS lane +FROM package_history +WHERE destination_act IS NOT NULL +ORDER BY lane ASC; \ No newline at end of file diff --git a/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c b/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c new file mode 100644 index 00000000..6ccc3441 --- /dev/null +++ b/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c @@ -0,0 +1,32 @@ +import os + +LOG = system.util.logger("HMI Setup") + +def upload(): + system.gui.messageBox("Please provide the file location of the Description of Operations...") + path = system.file.openFile('pdf') + if path == None: + system.gui.messageBox("No path given!") + else: + # Load file contents as csv: + tags = {} + try: + project = system.util.getProjectName() + print "Opening file..." + with open(path, 'rb') as pdf: + payload = { "data": pdf.read() } + print "Uploading file..." + system.util.sendMessage(project, "setup-doo", payload, "G") + print "Done!" + except: + # In case the csv file is corrupt or in a bad format, ignore it: + system.gui.messageBox("Failed to open file!") + +def store(data): + path = os.path.join(os.getcwd(), "webserver", "webapps", "main", "pdfs") + if not os.path.exists(path): + os.makedirs(path) + path = os.path.join(path, "Description of Operations.pdf") + with open(path, 'wb') as pdf: + pdf.write(data) + LOG.info("Uploaded new Description of Operations: /pdfs/Description of Operations.pdf") diff --git a/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 b/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 new file mode 100644 index 00000000..a0fa2d7f --- /dev/null +++ b/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 @@ -0,0 +1,359 @@ +{ + "custom": {}, + "params": { + "titleExtra": "4 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "GaylordStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/GaylordStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "gaylord", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Gaylord" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Cycles (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 130 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Gaylord Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e b/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e new file mode 100644 index 00000000..90214158 --- /dev/null +++ b/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e @@ -0,0 +1,37 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS chute, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "RS%4CH" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + chute, + /*CASE chute + WHEN "RE5-1CH" THEN "RB49/40" + WHEN "RE5-2CH" THEN "RB47/48" + WHEN "RE5-3CH" THEN "RB45/46" + WHEN "RE5-4CH" THEN "RB43/44" + WHEN "RE5-5CH" THEN "RB41/42" + WHEN "RE5-6CH" THEN "RB22/21" + WHEN "RE5-7CH" THEN "RB24/23" + WHEN "RE5-8CH" THEN "RB26/25" + WHEN "RE5-9CH" THEN "RB28/27" + WHEN "RE5-10CH" THEN "RB20/29" + ELSE "Unknown" + END AS robins,*/ + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 b/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 new file mode 100644 index 00000000..47022bf0 --- /dev/null +++ b/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 @@ -0,0 +1,307 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "FIO" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EIP" + }, + "position": { + "height": 45, + "width": 90, + "x": 54.5, + "y": 12.5 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027EIP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 b/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 new file mode 100644 index 00000000..7df03faf --- /dev/null +++ b/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 @@ -0,0 +1,195 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "mirror": false, + "tagPath": "[default]MCP02/CH_20130/CH_20130" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 81, + "width": 50 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "meta": { + "name": "CH" + }, + "position": { + "height": 30, + "rotate": { + "angle": "180deg" + }, + "width": "100%", + "y": 4 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "CH_Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 43, + "x": 2, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH_Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 18, + "y": 65 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"SpiralChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"spiralchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 b/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 new file mode 100644 index 00000000..cc44d06a --- /dev/null +++ b/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 @@ -0,0 +1,251 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "OK" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 40 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "FIO", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_fio_safety" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 b/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 new file mode 100644 index 00000000..02a2441c --- /dev/null +++ b/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 @@ -0,0 +1,236 @@ +{ + "custom": { + "state_string": "OK", + "string": "OK" + }, + "params": { + "tagProps": [ + "value" + ] + }, + "propConfig": { + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "OK" + }, + { + "input": 1, + "output": "Fault" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 20 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EncoderIcon" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#47FF47", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "cx": 12, + "cy": "12", + "fill": {}, + "name": "statusCircle", + "rx": "10", + "ry": "10", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "ellipse" + }, + { + "d": "M 4.6516854,13.685393 H 9.8292135", + "fill": {}, + "name": "segLeft", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 9.6000004,13.469662 V 8.2112357", + "fill": {}, + "name": "segUpLeft", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 19.829214,13.685393 H 14.651685", + "fill": {}, + "name": "segRight", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 14.880899,13.469662 V 8.211236", + "fill": {}, + "name": "segUpRight", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 9.8154019,8.4404597 4.8815551,0.013462", + "fill": {}, + "name": "segTop", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "viewBox": "0 0 24 24" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "Encoder", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_encoders" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 b/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 new file mode 100644 index 00000000..ab882359 --- /dev/null +++ b/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 @@ -0,0 +1,2727 @@ +{ + "custom": { + "currentTab": 0, + "isHeatmap": false + }, + "params": {}, + "propConfig": { + "custom.currentTab": { + "persistent": true + }, + "custom.isHeatmap": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 1400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Background" + }, + "position": { + "height": "100%", + "width": 32 + }, + "props": { + "style": { + "background": "#808080", + "border-right": "2px solid #000" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 0:\n\t\tself.view.custom.currentTab \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Navigation" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 1 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Navigation" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 5 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#000000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "color": "#000000", + "path": "material/navigation", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 1:\n\t\tself.view.custom.currentTab \u003d 1" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Alarms" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 33 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Alarms" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 38 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "expression": "if({../AlarmContainer/Table.custom.hasAlarms}\r\n \u0026\u0026 {[default]Gateway/ToggleTag},\r\n \"#F00\",\r\n if({view.custom.currentTab} \u003d 1,\r\n \"#000\",\r\n \"#AAA\"\r\n )\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "color": "#AAA", + "path": "material/notifications_active", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 2:\n\t\tself.view.custom.currentTab \u003d 2" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Options" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 65 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Options" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 70 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#000000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "color": "#AAAAAA", + "path": "material/settings", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 24, + "width": 100, + "x": 110 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Time:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ConfigButton" + }, + "position": { + "height": 32, + "width": 108, + "x": 1, + "y": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Configure" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"AlarmTable\").getChild(\"Table\")\n\tutils.downloadCSV(data, \"Heatmap\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExportButton" + }, + "position": { + "height": 31, + "width": 108, + "x": 1, + "y": 34 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\theatmapSettings \u003d self.session.custom.heatmapSettings\n\theatmapSettings.enabled \u003d False\n\t# Clear data:\n\theatmapSettings.data \u003d system.dataset.clearDataset(heatmapSettings.data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExitButton" + }, + "position": { + "height": 31, + "width": 108, + "x": 1, + "y": 66 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "exit mode" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 24, + "width": 350, + "x": 210 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "struct": { + "heatmapEnable": "{session.custom.heatmapSettings.enabled}", + "time": "{session.custom.heatmapSettings.time}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnable:\n\t\treturn value.time.start.value + \" to \" + value.time.end.value\n\telse:\n\t\treturn \"\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 24 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Shifts:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 48 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Alarms:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_5" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 72 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Devices:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_6" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 24 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.shiftsText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_7" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 48 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.alarmsText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_8" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 72 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.devicesText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\twindow \u003d \"Windows/GraphicsWrapper\"\n\tplctag \u003d self.props.data.getValueAt(event.row, \"plctag\")\n\tscreen \u003d alarms.resolveScreen(event.value.device, plctag)\n\tparams \u003d {\"view\": screen}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + }, + "onSelectionChange": { + "config": { + "script": "\tif event.selectedRow \u003c\u003e None:\n\t\tdevice \u003d self.props.data.getValueAt(event.selectedRow, \"device\")\n\t\tself.session.custom.alarmHighlight \u003d device\n\telse:\n\t\tself.session.custom.alarmHighlight \u003d \"\"" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "200%", + "width": "200%", + "x": "-50%", + "y": "-50%" + }, + "propConfig": { + "custom.hasAlarms": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Design/ActiveAlarms" + }, + "transforms": [ + { + "code": "\trows \u003d []\n\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") \u003c\u003e \"Error\":\n\t\t\trows.append(r)\n\treturn system.dataset.deleteRows(value, rows).getRowCount()\u003e0", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.data" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.props.selectedColumn \u003d None\n\tself.session.custom.alarmHighlight \u003d \"\"" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "22px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Count" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "selectedColumn": null, + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "transform": "scale(0.5)" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "AlarmTable" + }, + "position": { + "height": "100%", + "width": "calc(100% - 560px)", + "x": 560 + }, + "props": { + "style": { + "min-width": "786px" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "HeatmapContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "NavigationContainer" + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + } + }, + "props.instances": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Areas" + }, + "transforms": [ + { + "code": "\treturn nav.genButtonsFromDataset(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "enableTransitions": false, + "transitionSettings": { + "duration": "1s", + "timingFunction": "linear" + } + }, + "type": "ia.display.viewcanvas" + }, + { + "children": [ + { + "meta": { + "name": "Background" + }, + "position": { + "height": "100%", + "width": 182 + }, + "props": { + "style": { + "background": "#AAA", + "border-right": "2px solid #000" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_Active" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 23 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_HitList" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 48 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_History" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 73 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Alarms" + }, + "position": { + "height": 21, + "width": 180 + }, + "props": { + "style": { + "backgroundColor": "#FF8A8A", + "border-bottom": "2px solid #000", + "fontFamily": "Helvetica", + "fontSize": "11px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Showing 9 Alarms" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + }, + "onSelectionChange": { + "config": { + "script": "\tif event.selectedRow \u003c\u003e None:\n\t\tdevice \u003d self.props.data.getValueAt(event.selectedRow, \"device\")\n\t\tself.session.custom.alarmHighlight \u003d device\n\telse:\n\t\tself.session.custom.alarmHighlight \u003d \"\"" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "calc(100% - 182px)", + "x": 182 + }, + "propConfig": { + "custom.hasAlarms": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ActiveAlarms" + }, + "transforms": [ + { + "code": "\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") \u003d\u003d \"Error\":\n\t\t\treturn True\n\treturn False", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "expression": "if({../AlarmContainer.meta.visible} \u0026\u0026 {page.props.primaryView} !\u003d null \u0026\u0026 {session.custom.currentGraphic} !\u003d null,\r\n\t// We return ActiveAlarms anyway, regardless of result, because we want to subscribe to the above too\r\n\t{[default]Gateway/ActiveAlarms},\r\n\t{[default]Gateway/ActiveAlarms}\r\n)" + }, + "transforms": [ + { + "code": "\tif self.parent.parent.getChild(\"AlarmContainer\").meta.visible:\n\t\trows \u003d []\n\t\tfor r in range(value.getRowCount()):\n\t\t\tif value.getValueAt(r, \"Class\") !\u003d \"Error\":\n\t\t\t\trows.append(r)\n\t\ta \u003d system.dataset.deleteRows(value, rows)\n\t\tscreen \u003d self.page.props.primaryView\n\t\tshownRows \u003d totalRows \u003d a.getRowCount()\n\t\tif screen \u003d\u003d \"Windows/GraphicsWrapper\":\n\t\t\ta \u003d alarms.filterAlarms(self.session.custom.currentGraphic, a)\n\t\t\tshownRows \u003d a.getRowCount()\n\t\t# Update alarm label:\n\t\talarmLabel \u003d self.parent.getChild(\"Label_Alarms\")\n\t\tif shownRows \u003c\u003e totalRows:\n\t\t\talarmLabel.props.text \u003d \u0027Showing {:n} of {:n} Alarms\u0027.format(shownRows, totalRows)\n\t\telse:\n\t\t\talarmLabel.props.text \u003d \u0027Showing {:n} Alarms\u0027.format(totalRows)\n\t\treturn a\n\telse:\n\t\treturn system.dataset.clearDataset(value)", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "11px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Event Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 135 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 75 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarm Data" + } + }, + "pager": { + "bottom": false + }, + "rows": { + "height": 15, + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "12px", + "fontWeight": "bold", + "minWidth": "786px", + "transform": "scale(1)" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "AlarmContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "custom": { + "selectedState": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tval \u003d self.props.selected\n\tif val in [True, False]:\n\t\tfor child in self.parent.getChildren():\n\t\t\tif child.meta.name.startswith(\"Checkbox\"):\n\t\t\t\tchild.props.selected \u003d val\n\telse:\n\t\tself.props.selected \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show_Devices" + }, + "position": { + "height": 24, + "width": 160, + "x": 50 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "expression": " {../Checkbox_Beacons.props.selected}\r\n||{../Checkbox_DivertPaddles.props.selected}\r\n||{../Checkbox_EIPs.props.selected}\r\n||{../Checkbox_Encoders.props.selected}\r\n||{../Checkbox_Estops.props.selected}\r\n||{../Checkbox_ProxSwitches.props.selected}\r\n||{../Checkbox_MCPs.props.selected}\r\n||{../Checkbox_PhotoEyes.props.selected}\r\n||{../Checkbox_PushButtons.props.selected}\r\n||{../Checkbox_Scanners.props.selected}\r\n||{../Checkbox_VFDs.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "Show Devices" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Beacons" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Beacons" + }, + "type": "property" + } + } + }, + "props": { + "text": "Beacons" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_DivertPaddles" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.ConveyorLabels" + }, + "type": "property" + } + } + }, + "props": { + "text": "Conveyor Labels" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_EIPs" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.EIPs" + }, + "type": "property" + } + } + }, + "props": { + "text": "EIPs" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Encoders" + }, + "position": { + "height": 24, + "width": 180, + "x": 220 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Encoders" + }, + "type": "property" + } + } + }, + "props": { + "text": "Encoders" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Estops" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Estops" + }, + "type": "property" + } + } + }, + "props": { + "text": "Estops" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_ProxSwitches" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.LimitSwitches" + }, + "type": "property" + } + } + }, + "props": { + "text": "Prox Switches" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_MCPs" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.MCPs" + }, + "type": "property" + } + } + }, + "props": { + "text": "MCPs" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_PhotoEyes" + }, + "position": { + "height": 24, + "width": 180, + "x": 390 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.PhotoEyes" + }, + "type": "property" + } + } + }, + "props": { + "text": "Photo Eyes" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_PushButtons" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.PushButtons" + }, + "type": "property" + } + } + }, + "props": { + "text": "Push Buttons" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Scanners" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Scanners" + }, + "type": "property" + } + } + }, + "props": { + "text": "Scanners" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_VFDs" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.VFDs" + }, + "type": "property" + } + } + }, + "props": { + "text": "VFDs" + }, + "type": "ia.input.checkbox" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tgateway.setPowerSaveMin(self.props.value)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "PowerSaveMinutes" + }, + "position": { + "height": 25, + "width": 170, + "x": 570, + "y": 28 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "struct": { + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/PowerSaveMin" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_PowerSave" + }, + "position": { + "height": 24, + "width": 170, + "x": 570 + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "Power Save Minutes" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_FMS", + "visible": false + }, + "position": { + "height": 24, + "width": 245, + "x": 785 + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "FMS Options" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Slider_ImbalanceSP", + "visible": false + }, + "position": { + "height": 32, + "width": 120, + "x": 905, + "y": 55 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "{../Toggle_PeakMode.props.enabled} \u0026\u0026 {../Toggle_PeakMode.props.selected}" + }, + "type": "expr" + } + }, + "props.trackColor": { + "binding": { + "config": { + "expression": "if({parent.meta.visible},\r\n\t\"\",\r\n\t\"rgba(0,0,0,0)\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/Peak_Mode_Imbalance_SP" + }, + "type": "tag" + } + } + }, + "props": { + "labels": { + "interval": 5, + "show": true + }, + "max": 90, + "min": 75, + "step": 5, + "trackColor": "rgba(0,0,0,0)" + }, + "type": "ia.input.slider" + }, + { + "meta": { + "name": "Toggle_PeakMode", + "visible": false + }, + "position": { + "height": 32, + "width": 55, + "x": 885, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "struct": { + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/Peak_Mode_Enabled" + }, + "type": "tag" + } + } + }, + "props": { + "label": { + "position": "left" + } + }, + "type": "ia.input.toggle-switch" + }, + { + "meta": { + "name": "Label_PeakMode", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 785, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "Peak Mode:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_ImbalanceSP", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 785, + "y": 58 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "Imbalance SP:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_PeakMode_0", + "visible": false + }, + "position": { + "height": 25, + "width": 60, + "x": 935, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "expression": "if({../Toggle_PeakMode.props.selected},\r\n\t\"On\",\r\n\t\"Off\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_PeakMode_1", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 1040, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "RE5 To PS3:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Toggle_PeakMode_0", + "visible": false + }, + "position": { + "height": 32, + "width": 55, + "x": 1140, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "struct": { + "enabled": " {[default]MCP03_Custom/RE05_To_PS03_HMI_Enable}\r\n\u0026\u0026{[default]MCP04_Custom/RE05_To_PS03_HMI_Enable}", + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.enabled and (value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles)))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/RE05_To_PS03_HMI" + }, + "type": "tag" + } + } + }, + "props": { + "label": { + "position": "left" + } + }, + "type": "ia.input.toggle-switch" + }, + { + "meta": { + "name": "Label_PeakMode_2", + "visible": false + }, + "position": { + "height": 25, + "width": 60, + "x": 1190, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "expression": "try(\r\nif({[default]FMS/RE05_To_PS03_HMI},\r\n\t\"Reverse\",\r\n\t\"Forward\"\r\n),\r\n\"Unknown\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Docked_Extra" + }, + "position": { + "height": "100%", + "width": "calc(100% - 775px)", + "x": 775 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Windows/Docked/Docked_Extra" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "OptionsContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "background": "#EEE" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 b/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 new file mode 100644 index 00000000..a6ba74f6 --- /dev/null +++ b/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 b/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 new file mode 100644 index 00000000..f5abd78f --- /dev/null +++ b/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 @@ -0,0 +1,15 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 100 + } + }, + "root": { + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 b/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 new file mode 100644 index 00000000..f2d3dfa0 --- /dev/null +++ b/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 @@ -0,0 +1,57 @@ +WITH range_alarm_events AS ( + SELECT e.*, + /* Get the last time this event was active within the given time range*/ + ( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + LIMIT 1 + ) AS endtime + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE + /* Filter for Active events */ + eventtype = 0 + /* Filter priority */ + AND priority >= :priority + /* Filter by tag */ + AND source LIKE CONCAT("prov:default:/tag:", REGEXP_REPLACE(:tagPath, "\\[.*\\]|\\/Graphics", ""), "%") + ORDER BY eventtime DESC + LIMIT 50 +), range_alarm_events2 AS ( + SELECT *, + COALESCE(endtime, NOW()) AS endtime_est, /* Clamp to end of time range if clear event is after end time */ + TIMESTAMPDIFF(SECOND, eventtime, COALESCE(endtime, NOW())) AS duration + FROM range_alarm_events +) +SELECT e.id, + e.eventtime AS starttime, e.endtime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve data */ + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM range_alarm_events2 e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class"; \ No newline at end of file diff --git a/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da b/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da new file mode 100644 index 00000000..9eff872f --- /dev/null +++ b/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da @@ -0,0 +1,3189 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 508, + "width": 1103 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OS01_01GR" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 77, + "x": 852, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "OS01_02CH" + }, + "position": { + "height": 20, + "width": 250, + "x": 852, + "y": 309 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL0" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0% 0%" + }, + "width": 83, + "x": 601, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL0/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 642, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 642, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D0" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 361, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D0/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 382, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 403, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 420, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D4" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 437, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D4/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D5" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 454, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D5/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D6" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 471, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D6/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_DV1" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0% 0%", + "angle": "270deg" + }, + "width": 32, + "x": 755, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_DV2" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0% 0%", + "angle": "270deg" + }, + "width": 32, + "x": 852, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 488, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 511, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 534, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_MG1" + }, + "position": { + "height": 13, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 601, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_MG2" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 601, + "y": 453 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TA1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 34, + "x": 874, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TA1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 683, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 700, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 717, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR4" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 34, + "x": 777, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR4/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR5" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 810, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR5/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_VR1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 44, + "x": 734, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_VR2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 44, + "x": 831, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_Visicon" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 45, + "x": 557, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/Visicon/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": false, + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_01GR" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 76, + "x": 755, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 420, + "x": 811, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 161, + "x": 392, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 810, + "x": 1022, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 213, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 379, + "x": 24, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_04" + }, + "position": { + "height": 126, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 126, + "x": 232, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20, + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE02_07" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 44, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "MCP10" + }, + "position": { + "height": 20, + "width": 50, + "x": 435, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/MCP10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS01_07_AL0_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 635, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL0/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_AL1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 666, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_AL2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 666, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D0_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 365, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D0/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 385, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 404, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 421, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D4_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 438, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D4/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D5_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 455, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D5/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D6_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D6/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_DV1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 738, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_DV2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 909, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 491, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 515, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 537, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_MG1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 603, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_MG2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 603, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TA1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 884, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TA1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 684, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 701, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 718, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR4_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 785, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR4/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR5_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 814, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR5/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_VR1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 749, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_VR2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 846, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 459, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 309, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 561, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 139, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 25, + "y": 386 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_ESS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 684, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 684, + "y": 488 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS3" + }, + "position": { + "height": 20, + "width": 20, + "x": 717, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS4" + }, + "position": { + "height": 20, + "width": 20, + "x": 863, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS5" + }, + "position": { + "height": 20, + "width": 20, + "x": 831, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_01GR_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 285, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 608, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_06_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 56, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_01GR_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_01GR_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 371 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 704, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 723, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 245, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 264, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 248, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 568, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 587, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_07_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 43, + "y": 399 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "OS01_01GR_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": 270 + }, + "width": 30, + "x": 909, + "y": 393 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 631, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_02_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 451, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 244, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 568, + "y": 60 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_06_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 108, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_06_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 77, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "OS01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 916, + "y": 345 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "OS01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 916, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_01GR_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 833, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 687, + "y": 346 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 687, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 245, + "y": 272 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 245, + "y": 257 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 54 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 551, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_07_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 43, + "y": 382 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "OS01_01GR_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "-135deg" + }, + "width": 99, + "x": 912, + "y": 408 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "OS01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 982, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_01GR_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": 45 + }, + "width": 99, + "x": 751, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 393, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_02_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 674, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 243, + "y": 300 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 380, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 36, + "x": 144, + "y": 400 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 485, + "y": 8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 45, + "y": 48 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 34, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_08_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 34, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 b/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 new file mode 100644 index 00000000..b698adfa --- /dev/null +++ b/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 @@ -0,0 +1,32 @@ +WITH INDUCTS AS ( + ( + SELECT + DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") AS time, + sorter, + induct, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, time + ) UNION ALL ( + SELECT + DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") AS time, + "AR" AS sorter, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, time + ) +) +SELECT + time, + /* Counts: */ + SUM(total) AS total_count, + /* PPH: */ + ROUND(SUM(total)*60) AS total_pph, + /* Percents: */ + ROUND(SUM(total)/(SUM(total) OVER(PARTITION BY sorter, time)), 4) AS 'total/sorter_percent' +FROM INDUCTS +WHERE induct = :induct +GROUP BY induct, time; \ No newline at end of file diff --git a/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff b/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff new file mode 100644 index 00000000..d5899447 --- /dev/null +++ b/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff @@ -0,0 +1,14 @@ +{ + "base": { + "style": { + "backgroundColor": "#2D7D9F", + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FFF" + } + } +} \ No newline at end of file diff --git a/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c b/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c new file mode 100644 index 00000000..96bed6f2 --- /dev/null +++ b/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c @@ -0,0 +1,274 @@ +{ + "custom": { + "disconnected": true, + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Start" + }, + { + "input": 2, + "output": "Start Pressed" + }, + { + "input": 3, + "output": "Start Illuminated" + }, + { + "input": 4, + "output": "Start Pressed / Illuminated" + }, + { + "input": 5, + "output": "Stop" + }, + { + "input": 6, + "output": "Stop Pressed" + }, + { + "input": 7, + "output": "Stop Illuminated" + }, + { + "input": 8, + "output": "Stop Pressed / Illuminated" + }, + { + "input": 9, + "output": "Restart" + }, + { + "input": 10, + "output": "Restart Pressed" + }, + { + "input": 11, + "output": "Restart Illuminated" + }, + { + "input": 12, + "output": "Restart Pressed / Illuminated" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "JR_Button" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d 0, \"#a9a9a9\", // disconnected gray (DarkGray)\r\n if(\r\n {view.custom.state} % 2 \u003d 1, \"#ffffff\", // white\r\n \"#000000\" // black\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if({view.custom.state} \u003d 0, \"#a9a9a9\", // disconnected gray\r\n if({view.custom.state} \u003d 1 || {view.custom.state} \u003d 2, \"#90ee90\", // light green\r\n if({view.custom.state} \u003d 3 || {view.custom.state} \u003d 4, \"#228B22\", // softer dark green\r\n if({view.custom.state} \u003d 5 || {view.custom.state} \u003d 6, \"#ffc0cb\", // pink\r\n if({view.custom.state} \u003d 7 || {view.custom.state} \u003d 8, \"#ff0000\", // red\r\n if({view.custom.state} \u003d 9 || {view.custom.state} \u003d 10, \"#808080\", // normal gray\r\n if({view.custom.state} \u003d 11 || {view.custom.state} \u003d 12, \"#ffffff\", \"\") // white\r\n )\r\n )\r\n )\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 20 V 20 H 0 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 20 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 b/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 new file mode 100644 index 00000000..750ff130 --- /dev/null +++ b/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,164,255,1) 0%, rgba(0,157,245,1) 70%, rgba(0,134,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(0,164,255,1) 0%, rgba(0,157,245,1) 70%, rgba(0,134,208,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,134,208,1) 0%, rgba(0,134,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 b/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 new file mode 100644 index 00000000..f79ee95f --- /dev/null +++ b/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 b/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 new file mode 100644 index 00000000..edb41695 --- /dev/null +++ b/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 @@ -0,0 +1,16 @@ +SELECT s01_timestamp AS induct_timestamp, + s04_timestamp AS confirm_timestamp, + sorter, trackid, scanner, + bcr_imgid AS imgid, s01_barcode AS barcode, scanner_status, + pkg_length/10 AS pkg_length, /* In inches */ + gap_leading/10 AS gap_leading, /* In inches */ + gap_trailing/10 AS gap_trailing, /* In inches */ + carriers AS trays, + assignments, divert_status, + destination_req AS requested_dest, + destination_act AS diverted_dest, + sort_code +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +ORDER BY s04_timestamp DESC +{limit}; \ No newline at end of file diff --git a/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc b/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc new file mode 100644 index 00000000..36519a25 --- /dev/null +++ b/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc @@ -0,0 +1,109 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + total AS total_pph, + success AS success_pph, + unknown AS unknown_pph, + unexpected AS unexpected_pph, + track_err AS track_err_pph, + gap_err AS gap_err_pph, + dest_full AS dest_full_pph, + dest_fault AS dest_fault_pph, + dest_invalid AS dest_invalid_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + dest_disabled AS dest_disabled_pph, + rate_high AS rate_high_pph, + div_fail AS div_fail_pph, + dest_none AS dest_none_pph, + lost AS lost_pph, + dim_err AS dim_err_pph, + weight_err AS weight_err_pph, + underutilized AS underutilized_pph, + unsafe AS unsafe_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 b/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 new file mode 100644 index 00000000..9524973c --- /dev/null +++ b/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 @@ -0,0 +1,322 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 200 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "95%", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "95%", + "y": "10" + } + ], + "viewBox": "0 0 300 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 b/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 new file mode 100644 index 00000000..17e41011 --- /dev/null +++ b/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 @@ -0,0 +1,556 @@ +{ + "custom": {}, + "params": { + "titleExtra": "1 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ScannerSummary" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Total" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "rate", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Rate (PPH)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_gap_trailing", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Gap Trailing (Avg)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_gap_leading", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Gap Leading (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Package Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + } + ], + "data": [ + { + "avg_gap_leading": 35.6, + "avg_gap_trailing": 29, + "avg_pkg_length": 12.4, + "count": 73765, + "rate": 3074, + "scanner": "S01aa", + "sorter": "S01" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageSummary\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner Summary\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae b/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae new file mode 100644 index 00000000..683fd7fb --- /dev/null +++ b/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae @@ -0,0 +1,214 @@ +{ + "dataTypes": { + "Int1": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int2": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int4": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int8": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Float4": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer" + ], + "Float8": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer" + ], + "Boolean": [ + "ia.input.checkbox", + "ia.input.toggle-switch" + ], + "String": [ + "ia.display.label", + "ia.display.markdown" + ], + "DataSet": [ + "ia.display.table" + ] + }, + "bindings": { + "ia.input.oneshotbutton": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.display.table": [ + { + "tagProperty": "value", + "propertyPath": "props.data", + "bidirectional": false + } + ], + "ia.display.markdown": [ + { + "tagProperty": "value", + "propertyPath": "props.source", + "bidirectional": false + } + ], + "ia.chart.simple-gauge": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.display.progress": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.numeric-entry-field": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.input.password-field": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ], + "ia.input.toggle-switch": [ + { + "tagProperty": "value", + "propertyPath": "props.selected", + "bidirectional": true + } + ], + "ia.display.label": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": false + } + ], + "rad.display.messenger": [ + { + "tagProperty": "jsonValues", + "propertyPath": "messageConfig", + "bidirectional": true + } + ], + "ia.input.checkbox": [ + { + "tagProperty": "value", + "propertyPath": "props.selected", + "bidirectional": true + } + ], + "ia.display.cylindrical-tank": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.text-area": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ], + "ia.display.led-display": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.barcodescannerinput": [ + { + "tagProperty": "value", + "propertyPath": "props.data", + "bidirectional": true + } + ], + "ia.chart.gauge": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.display.thermometer": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.slider": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.input.text-field": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ] + } +} \ No newline at end of file diff --git a/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e b/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e new file mode 100644 index 00000000..86f9c1d6 --- /dev/null +++ b/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e @@ -0,0 +1,222 @@ +{ + "custom": { + "state": 1, + "state_string": "Device Disconnected", + "string": "Device Disconnected" + }, + "params": { + "tagProps": [ + "value" + ] + }, + "propConfig": { + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "OK" + }, + { + "input": 1, + "output": "Device Disconnected" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 26, + "width": 26 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#C2C2C2", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "url(#splitGreenGrey)" + }, + { + "input": 1, + "output": "#C2C2C2" + }, + { + "input": 2, + "output": "url(#splitRedGrey)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "offset": "0%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "49.5%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "50.5%", + "stop-color": "#00FF00", + "type": "stop" + }, + { + "offset": "100%", + "stop-color": "#00FF00", + "type": "stop" + } + ], + "gradientUnits": "userSpaceOnUse", + "id": "splitGreenGrey", + "type": "linearGradient", + "x1": "0", + "x2": "24", + "y1": "0", + "y2": "24" + }, + { + "elements": [ + { + "offset": "0%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "49.5%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "50.5%", + "stop-color": "#FF0000", + "type": "stop" + }, + { + "offset": "100%", + "stop-color": "#FF0000", + "type": "stop" + } + ], + "gradientUnits": "userSpaceOnUse", + "id": "splitRedGrey", + "type": "linearGradient", + "x1": "0", + "x2": "24", + "y1": "0", + "y2": "24" + } + ], + "type": "defs" + }, + { + "cx": "12", + "cy": "12", + "fill": {}, + "rx": "10", + "ry": "10", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "ellipse" + }, + { + "d": "M 6,18 L 18,6", + "fill": {}, + "stroke": { + "linecap": "round", + "paint": "#000000", + "width": "2" + }, + "type": "path" + } + ], + "viewBox": "0 0 24 24" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "VFD", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_VFD" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e b/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e new file mode 100644 index 00000000..7b36e1d6 --- /dev/null +++ b/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 b/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 new file mode 100644 index 00000000..ffedc635 --- /dev/null +++ b/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 @@ -0,0 +1,75 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter priority */ + AND priority >= :priority + /* Filter out system events and active events only */ + AND eventflags & 1 != 1 AND eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + source, + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +) +/* Finally, merge metadata into hitlist */ +SELECT e.id, + e.firsttime, e.lasttime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve instance count and total duration */ + e.count, + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM HITLIST e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +WHERE CASE + WHEN dclass.strvalue = "Error" THEN 2 + WHEN dclass.strvalue = "Warning" THEN 1 + WHEN dclass.strvalue = "Message" THEN 0 + END >= :class; \ No newline at end of file diff --git a/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 b/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 new file mode 100644 index 00000000..01905f0a --- /dev/null +++ b/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 @@ -0,0 +1,246 @@ +{ + "custom": {}, + "params": { + "deviceType": "beacon", + "meta": { + "name": "" + }, + "props": { + "config": { + "alwaysShowAll": true, + "enableHighlight": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false, + "originSide": "left", + "paddleThickness": 10, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isExtended": true, + "isManual": false, + "isRetracted": false, + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + }, + "tabs": [ + "Status", + "Alarm History", + "Devices", + "Controls" + ] + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.originSide": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.paddleThickness": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.type": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.background": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isExtended": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isFaulted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isManual": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isRetracted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.tooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs": { + "paramDirection": "inout", + "persistent": true + }, + "params.tabs[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[3]": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 569, + "width": 900 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 35, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + }, + "text": "Oiler" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 35px)", + "width": "100%", + "y": 35 + }, + "propConfig": { + "custom.key": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "height": 35, + "width": 150 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Controls" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 69px)", + "width": "100%", + "y": 69 + }, + "props": { + "path": "Popups/Device/Controls/oiler" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d b/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d new file mode 100644 index 00000000..5717a39e --- /dev/null +++ b/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "UL%" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + induct, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 b/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 new file mode 100644 index 00000000..620ea935 --- /dev/null +++ b/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 @@ -0,0 +1,60 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 671, + "width": 1707 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Inbound" + }, + "position": { + "height": 651, + "width": 1687, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 100, + "y": 150 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b b/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b new file mode 100644 index 00000000..7c5aa79f --- /dev/null +++ b/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b @@ -0,0 +1,63 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("GL BreakCount Handler") + +# For inserting data into database: +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO gl_history (gaylord_id,count) VALUES (?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + if millisec > 4: + LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processBreak(gaylordID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count]) + logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time) + +def processBreakAsync(gaylordID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + def processConfirmInner(): + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count]) + logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + \ No newline at end of file diff --git a/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 b/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 new file mode 100644 index 00000000..b9337b55 --- /dev/null +++ b/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#CCCCFF", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad b/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad new file mode 100644 index 00000000..f5a06ad5 --- /dev/null +++ b/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,255,0,1) 0%, rgba(0,245,0,1) 70%, rgba(0,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(0,255,0,1) 0%, rgba(0,245,0,1) 70%, rgba(0,208,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,208,0,1) 0%, rgba(0,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb b/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb new file mode 100644 index 00000000..c20d2a12 --- /dev/null +++ b/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb @@ -0,0 +1,14895 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1973, + "width": 4223 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RO16_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 1588, + "x": 3953, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO01_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 593, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO1-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO02_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 816, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO2-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO03_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1039, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO3-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO04_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1339, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO4-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO05_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1496, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO5-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO06_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1719, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO6-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO07_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1942, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO7-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO08_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2242, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO8-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO09_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2464, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO9-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO10_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2686, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO10-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO11_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2908, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO11-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO12_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3130, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO12-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO13_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3352, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO13-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO14_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3574, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO14-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO15_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3796, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO15-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 486, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 486, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL1-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 486, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 486, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 709, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 709, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL2-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 709, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 709, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 932, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 932, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL3-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 932, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 932, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1612, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1612, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL4-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1612, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1612, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1835, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1835, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL5-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1835, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1835, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2358, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2358, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL6-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2358, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2358, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2580, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2580, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL7-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2580, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2580, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2802, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2802, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL8-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2802, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2802, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3024, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3024, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL9-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3024, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3024, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3246, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3246, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL10-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3246, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3246, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3468, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3468, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL11-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3468, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3468, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3690, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3690, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL12-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3690, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3690, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3912, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3912, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL13-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3912, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3912, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 334, + "x": 4147, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 452, + "x": 3815, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 592, + "x": 3365, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 522, + "x": 2775, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 665, + "x": 2255, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 844, + "x": 1591, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_09" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 749, + "x": 749, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_03CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 78, + "x": 4049, + "y": 367 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_03CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO02_01" + }, + "position": { + "height": 20, + "width": 3955, + "x": 192, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_01PT" + }, + "position": { + "height": 62, + "rotate": { + "anchor": "0 0" + }, + "width": 62, + "x": 4146, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20 + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_02PT" + }, + "position": { + "height": 62, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 62, + "x": 4208, + "y": 531 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_02PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20 + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 4048, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_04CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 3973, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "FL01_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 372, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL02_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 595, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL03_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 818, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL04_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1498, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL05_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1721, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL06_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2244, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL07_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2466, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL08_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2688, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL09_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2910, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL10_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3132, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL11_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3354, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL12_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3576, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL13_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3798, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO01_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 438, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO01_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 552, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO02_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 661, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO02_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 775, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO03_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 884, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO03_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 998, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO04_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1184, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO04_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1298, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO05_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1341, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO05_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1455, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO06_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1564, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO06_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1678, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO07_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1787, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO07_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1901, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO08_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2087, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO08_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2201, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO09_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2309, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO09_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2423, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO10_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2531, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO10_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2645, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO11_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2753, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO11_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2867, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO12_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2975, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO12_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3089, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO13_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3197, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO13_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3311, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO14_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3419, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO14_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3533, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO15_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3641, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO15_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3755, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO16_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3954, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "MCP03" + }, + "position": { + "height": 20, + "width": 50, + "x": 1968, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/MCP03/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "RE03_01PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4207, + "y": 506 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_02PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4151, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_02PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3977, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3459, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 2998, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 2488, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1989, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1048, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 278, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3954, + "y": 1794 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4129, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 4031, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 4031, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2006, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2006, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 2067, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 2067, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 86, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 86, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 164, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 164, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 4108, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC10" + }, + "position": { + "height": 20, + "width": 20, + "x": 1163, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC11" + }, + "position": { + "height": 20, + "width": 20, + "x": 1102, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC12" + }, + "position": { + "height": 20, + "width": 20, + "x": 1102, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC12/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 4108, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 4030, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 4030, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC5" + }, + "position": { + "height": 20, + "width": 20, + "x": 2066, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC6" + }, + "position": { + "height": 20, + "width": 20, + "x": 2066, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC7" + }, + "position": { + "height": 20, + "width": 20, + "x": 2005, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC8" + }, + "position": { + "height": 20, + "width": 20, + "x": 2005, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC9" + }, + "position": { + "height": 20, + "width": 20, + "x": 1163, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC9/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "FL01_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 465, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL02_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 688, + "y": 367 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL03_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 911, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL04_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1591, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL05_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1814, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL06_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2337, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL07_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2559, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL08_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2781, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL09_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3003, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL10_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3225, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL11_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3447, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL12_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3669, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL13_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3891, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4069, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4088, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4069, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4088, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2027, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2046, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2027, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2046, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 124, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 143, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 124, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 143, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO01_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 643, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO02_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 866, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO03_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1089, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO04_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1389, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO05_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1546, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO06_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1769, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO07_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1992, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO08_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2292, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO09_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2514, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO10_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2736, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO11_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2958, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO12_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3180, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO13_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3402, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO14_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3624, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO15_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3846, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_04CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3964, + "y": 325 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4068, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4087, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4068, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4087, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS3_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2026, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS3/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS3_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2045, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS3/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS4_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2026, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS4/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS4_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2045, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS4/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS5_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1123, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS5/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS5_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1142, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS5/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS6_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1123, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS6/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS6_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1142, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS6/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL01_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 507, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL02_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 730, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL03_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 953, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL04_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1633, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL05_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1856, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL06_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2379, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL07_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2601, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL08_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2823, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL09_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3045, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL10_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3267, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL11_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3489, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL12_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3711, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL13_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3933, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4000, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 3969, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_07_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1975, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_07_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1944, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_09_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 24, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_09_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 55, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO01_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 596, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO02_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 819, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO03_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1042, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO04_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1342, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO05_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1499, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO06_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1722, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO07_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1945, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO08_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2245, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO09_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2467, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO10_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2689, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO11_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2911, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO12_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3133, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO13_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3355, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO14_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3577, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO15_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3799, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3970, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3954, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4068, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1974, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO3" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1071, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4099, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1943, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO3" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1040, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 507, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1856, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3045, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3933, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_01PT_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 4146, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 541 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 609 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_07_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2027, + "y": 535 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_07_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2028, + "y": 615 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 541 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 633, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 633, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 595, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 626, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 626, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 856, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 856, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 849, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 849, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1079, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1079, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1072, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1072, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1372, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1372, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1536, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1536, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1529, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1529, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1759, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1759, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1721, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1752, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1752, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1982, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1982, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1975, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1975, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2282, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2282, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2275, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2275, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2504, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2504, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2497, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2497, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2726, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2726, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2719, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2719, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2948, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2948, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 2910, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2941, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2941, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3170, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3170, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3163, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3163, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3392, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3392, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3385, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3385, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3614, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3614, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3607, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3607, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3836, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3836, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3798, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3829, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3829, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_04CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3947, + "y": 329 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_04CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3947, + "y": 314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3961, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 439 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 507 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2026, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN4_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2027, + "y": 513 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN4/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN5_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN5/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN5_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN5/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN6_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 513 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN6/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN7_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 203, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN7/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 380, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 476, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL01_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 476, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 603, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 699, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 699, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 826, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 922, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 922, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1506, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1602, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1602, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1729, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1825, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1825, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2252, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2348, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2348, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2474, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2570, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2570, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2696, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2792, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2792, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2918, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3014, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3014, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3140, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3236, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3236, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3362, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3458, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3458, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3584, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3680, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3680, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3806, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3902, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3902, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_01PT_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 4217, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 3816, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 4132, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 3366, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 2775, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 2256, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_07_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1633, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 749, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_09_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 13, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 445, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 598, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 576, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 668, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 821, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 799, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 891, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1044, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1022, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1191, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1343, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1322, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1348, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1500, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1479, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1571, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1723, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1702, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1794, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1946, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1925, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2095, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2246, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2225, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2317, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2468, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2447, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2539, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2690, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2669, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2761, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2912, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2891, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2983, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3134, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3113, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3205, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3356, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3335, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3427, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3578, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3557, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3649, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3800, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3779, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3962, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 4015, + "y": 337 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 37, + "x": 3964, + "y": 1934 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3923, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO201Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 274, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO201" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO202Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 349, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO202" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO203Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 415, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO203" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO204Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 595, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO204" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO205Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 662, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO205" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO206Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 818, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO206" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO207Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 885, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO207" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO208Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1185, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO208" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO209Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1341, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO209" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO210Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1498, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO210" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO211Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1565, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO211" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO212Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1721, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO212" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO213Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1788, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO213" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO214Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2088, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO214" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO215Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2243, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO215" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO217Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2466, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO217" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO216Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2310, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO216" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO219Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2688, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO219" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO218Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2533, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO218" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO221Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2909, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO221" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO220Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2755, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO220" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO223Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3132, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO223" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO222Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2976, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO222" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO229Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3797, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO229" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO228Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3643, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO228" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO227Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3576, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO227" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO226Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3421, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO226" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO225Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3355, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO225" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO224Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3199, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO224" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO230Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3955, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO230" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL1DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 444, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 326 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO1DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 532, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 325 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL2DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 667, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 324 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO2DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 754, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 323 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL3DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 889, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 322 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL4DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1570, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 320 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO6DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1657, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 319 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL5DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1793, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 318 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO7DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1880, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 317 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO8DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2180, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 316 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL6DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2315, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 315 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO9DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2402, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 314 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL7DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2537, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 313 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO10DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2624, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 312 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL8DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2759, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 311 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO11DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2846, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 310 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL9DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2981, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 309 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL10DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3203, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 308 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO13DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3290, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 307 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL11DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3425, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 306 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO14DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3512, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 305 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO15DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3734, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 303 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL12DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3647, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 304 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL13DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3870, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 302 + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "draggable": true, + "id": "sbxxr6Kp", + "modal": false, + "overlayDismiss": false, + "resizable": true, + "showCloseIcon": true, + "title": "Oiler", + "type": "open", + "viewPath": "Popups/Oiler", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 34, + "width": 80, + "x": 4043, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "transform": "scale(3)" + }, + "text": "Oiler" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SO2INLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 80, + "x": 183, + "y": 500 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO2 IN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO2INLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 80, + "x": 183, + "y": 500 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Sorter_Induct/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SO2OTELabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 90, + "x": 4083, + "y": 520 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO2 OTE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO2OTELabel_Tooltip" + }, + "position": { + "height": 25, + "width": 90, + "x": 4083, + "y": 520 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Sorter_OTE/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "draggable": true, + "id": "sbxxr6Kp", + "modal": false, + "overlayDismiss": false, + "resizable": false, + "showCloseIcon": true, + "title": "Wireless Pendant", + "type": "open", + "viewPath": "Popups/Device/Controls/pendant", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "PendantButton" + }, + "position": { + "height": 34, + "width": 80, + "x": 4043.4, + "y": 114 + }, + "propConfig": { + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/pendantEnableIND" + }, + "transforms": [ + { + "fallback": "#000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "FF0000" + }, + { + "input": false, + "output": "#000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "transform": "scale(3)" + }, + "text": "pendant" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SO02_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 235, + "y": 461 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 4020, + "y": 501 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 b/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 new file mode 100644 index 00000000..5458795e --- /dev/null +++ b/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 @@ -0,0 +1,98 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(success*60) AS success_pph, + ROUND(unknown*60) AS unknown_pph, + ROUND(unexpected*60) AS unexpected_pph, + ROUND(track_err*60) AS track_err_pph, + ROUND(gap_err*60) AS gap_err_pph, + ROUND(dest_full*60) AS dest_full_pph, + ROUND(dest_fault*60) AS dest_fault_pph, + ROUND(dest_invalid*60) AS dest_invalid_pph, + ROUND(no_read*60) AS no_read_pph, + ROUND(no_code*60) AS no_code_pph, + ROUND(multi_label*60) AS multi_label_pph, + ROUND(dest_disabled*60) AS dest_disabled_pph, + ROUND(rate_high*60) AS rate_high_pph, + ROUND(div_fail*60) AS div_fail_pph, + ROUND(dest_none*60) AS dest_none_pph, + ROUND(lost*60) AS lost_pph, + ROUND(dim_err*60) AS dim_err_pph, + ROUND(weight_err*60) AS weight_err_pph, + ROUND(underutilized*60) AS underutilized_pph, + ROUND(unsafe*60) AS unsafe_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 b/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 new file mode 100644 index 00000000..a2e08ae5 --- /dev/null +++ b/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 @@ -0,0 +1,1810 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 509, + "width": 645 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Instructions" + }, + "position": { + "height": 288, + "width": 423, + "x": 34, + "y": 176 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Label" + }, + "position": { + "height": 32, + "width": 240, + "x": 125.5, + "y": 144 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Divert Jog Procedure" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Text" + }, + "position": { + "height": 315, + "width": 423, + "x": 20.5, + "y": 185.78 + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "1. Press and secure \"Maintenance Mode\" button on the MCP\u003cbr\u003e\u003cbr\u003e\n2. Press \"ENABLE\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e\n3. Input diverter number on HMI\u003cbr\u003e\u003cbr\u003e\n4. Verify pendant is in range of receiver\u003cbr\u003e\u003cbr\u003e\n5. Hold down \"JOG\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e\n6. Hold down \"DIVERT\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e", + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Diverter_Selection_Label" + }, + "position": { + "height": 28, + "width": 159, + "x": 465.3, + "y": 291.75 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Diverter Selection:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NumericEntryField" + }, + "position": { + "height": 34, + "width": 79.99999999999994, + "x": 504.3, + "y": 318.25 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/divertID_INP" + }, + "type": "tag" + } + } + }, + "props": { + "containerStyle": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderStyle": "inset", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5 + }, + "format": "0,0", + "inputBounds": { + "invalidStyle": { + "backgroundColor": "#FF0000" + }, + "maximum": 30, + "minimum": 0 + }, + "placeholder": "0 to 30" + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "StsMaintLight" + }, + "position": { + "height": 112, + "width": 107, + "x": 5, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/maintModeIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "path": "this.custom.color" + }, + "type": "property" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "path": "this.custom.color" + }, + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsMaintLabel" + }, + "position": { + "height": 32, + "width": "auto", + "x": 15.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Maintenance Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight" + }, + "position": { + "height": 112, + "width": 107, + "x": 137, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/pendantEnableIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "fill": "#FF0000", + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel" + }, + "position": { + "height": 32, + "width": "auto", + "x": 151.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Pendant Enabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_0" + }, + "position": { + "height": 112, + "width": 107, + "x": 269, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/jogSlowIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_0" + }, + "position": { + "height": 32, + "width": "auto", + "x": 311.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "jog 1" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_1" + }, + "position": { + "height": 112, + "width": 107, + "x": 401, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/jogFastIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": 1, + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_1" + }, + "position": { + "height": 32, + "width": "auto", + "x": 443.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "jog 2" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_2" + }, + "position": { + "height": 112, + "width": 107, + "x": 533, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/oilerIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_2" + }, + "position": { + "height": 32, + "width": "auto", + "x": 574.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Oiler" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_3" + }, + "position": { + "height": 112, + "width": 107, + "x": 491.3, + "y": 175.75 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/divertIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_3" + }, + "position": { + "height": 32, + "width": "auto", + "x": 530.3, + "y": 171.75 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Divert" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Diverter_Selection_Label_0" + }, + "position": { + "height": 28, + "width": "auto", + "x": 479.3, + "y": 385 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Jog Speed (RPM)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LedDisplay" + }, + "position": { + "height": 32, + "width": 115.99999999999994, + "x": 486.3, + "y": 413.5 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/VFD/RPM" + }, + "type": "tag" + } + } + }, + "props": { + "numberFormat": "#,##0" + }, + "type": "ia.display.led-display" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 b/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 new file mode 100644 index 00000000..d894dfea --- /dev/null +++ b/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 @@ -0,0 +1,41 @@ +WITH SCANNERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + scanner, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, scanner + ORDER BY sorter, scanner +) +SELECT + start_timestamp, + end_timestamp, + sorter AS sorter, + scanner AS scanner, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(good_read*pph_multiplier) AS good_read_pph, + ROUND(no_read*pph_multiplier) AS no_read_pph, + ROUND(no_code*pph_multiplier) AS no_code_pph, + ROUND(multi_label*pph_multiplier) AS multi_label_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 b/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 new file mode 100644 index 00000000..c8fa9292 --- /dev/null +++ b/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 @@ -0,0 +1,1075 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ScannerHistory" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "induct_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "confirm_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Confirm Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trackid", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Parcel ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "imgid", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Img ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "barcode", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Label" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trays", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Trays (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "assignments", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Assignment" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "divert_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Divert Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "requested_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Req Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "diverted_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Actual Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "sort_code", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sort Code" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t\t\"limit\": \"LIMIT 4000\"\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Apply styles:\n\tfor row in filteredData:\n\t\t# Handle sort code:\n\t\tif row[\"sort_code\"] !\u003d \"Success\":\n\t\t\trow[\"sort_code\"] \u003d RED(row[\"sort_code\"])\n\t\t# Handle barcode:\n\t\tif row[\"scanner_status\"] !\u003d \"Good Read\":\n\t\t\trow[\"scanner_status\"] \u003d RED(row[\"scanner_status\"])\n\t\t\trow[\"barcode\"] \u003d RED(row[\"barcode\"])\n\t\t# Handle destinations:\n\t\tif len(row[\"assignments\"]) \u003e 0:\n\t\t\tDESTS \u003d row[\"assignments\"].split(\",\")\n\t\t\tif row[\"requested_dest\"] not in DESTS:\n\t\t\t\trow[\"requested_dest\"] \u003d RED(row[\"requested_dest\"])\n\t\t\telif row[\"requested_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"requested_dest\"] \u003d YELLOW(row[\"requested_dest\"])\n\t\t\tif row[\"diverted_dest\"] not in DESTS:\n\t\t\t\trow[\"diverted_dest\"] \u003d RED(row[\"diverted_dest\"])\n\t\t\telif row[\"diverted_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"diverted_dest\"] \u003d YELLOW(row[\"diverted_dest\"])\n\t\telse:\n\t\t\trow[\"assignments\"] \u003d RED(row[\"assignments\"])\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t\t\"limit\": \" \"\n\t})\n\tutils.downloadCSV(data, \"Scanner History\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export All" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa b/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa new file mode 100644 index 00000000..5d104cc9 --- /dev/null +++ b/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa @@ -0,0 +1,13 @@ +{ + "base": { + "style": {} + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "#C7DCED" + } + } + ] +} \ No newline at end of file diff --git a/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e b/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e new file mode 100644 index 00000000..c4c064b6 --- /dev/null +++ b/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#D5D5D5" + } + } +} \ No newline at end of file diff --git a/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 b/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 new file mode 100644 index 00000000..f0702a61 --- /dev/null +++ b/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 @@ -0,0 +1,18 @@ +WITH UNIQUE_ALARMS AS ( +SELECT + MAX(id) AS id, + source +FROM alarm_events +GROUP BY source +) +SELECT dalarm.displaypath AS description +FROM UNIQUE_ALARMS u +/* Lookup Alarm */ +JOIN alarm_events dalarm ON u.id = dalarm.id +/* Lookup Class */ +JOIN alarm_event_data dclass ON u.id = dclass.id AND dclass.propname = "Class" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON u.id = ddevice.id AND ddevice.propname = "Device" +WHERE dclass.strvalue IN ("Error", "Warning") + AND ddevice.strvalue NOT IN ("SorterA", "SorterB", "SorterC", "Ignition") +GROUP BY description; \ No newline at end of file diff --git a/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a b/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a new file mode 100644 index 00000000..32bbcdf5 --- /dev/null +++ b/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a @@ -0,0 +1,1097 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 500, + "width": 500 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualOff" + }, + "position": { + "height": 70, + "width": 85, + "x": 348.5, + "y": 412.5 + }, + "propConfig": { + "meta.cActive": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualStop" + }, + "transforms": [ + { + "expression": "coalesce({value}, false)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualStop" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Yellow" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "OFF", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualSlow" + }, + "position": { + "height": 70, + "width": 85, + "x": 259.5, + "y": 412.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualSlow" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Yellow" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "SLOW", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetManualEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManual" + }, + "position": { + "height": 70, + "width": 263, + "x": 170.5, + "y": 332.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}\u003d{value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Blue" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "MANUAL", + "textStyle": { + "fontSize": "18px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_13" + }, + "position": { + "height": 25, + "width": 190, + "x": 80, + "y": 285 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Last Fault Code:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbLastCode" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 285 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Last_Code_Text" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualOn" + }, + "position": { + "height": 70, + "width": 85, + "x": 170.5, + "y": 412.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualRun" + }, + "transforms": [ + { + "expression": " try({value}, false)\r\n\u0026\u0026 {../btnManualSlow.props.style.classes} \u003d \"Buttons/Grey\"", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Nominal", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 250 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status Code:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatusCode" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 250 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Status_Code" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_9" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 215 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Speed (RPM):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbFrequency" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 215 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/RPM" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetManualEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnAuto" + }, + "position": { + "height": 150, + "width": 95, + "x": 66.5, + "y": 332.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}\u003d{value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "AUTO", + "textStyle": { + "fontSize": "18px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_7" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 180 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Speed (FPM):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbSpeed" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 180 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Speed" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_5" + }, + "position": { + "height": 25, + "width": 235, + "x": 35, + "y": 145 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Motor Current (Amps):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbAmps" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 145 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Amps" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "height": 25, + "width": 125, + "x": 145, + "y": 110 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "IP Address:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbIPAddress" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 110 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/IPAddr" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 17.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 b/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 new file mode 100644 index 00000000..c1abb0e9 --- /dev/null +++ b/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 @@ -0,0 +1,40 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + /* PPH Data */ + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner, + /* Problem Solve Data */ + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + /* Sorter Error Data */ + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* PPH: */ + ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph, + /* Problem Solve Percents: */ + ROUND((SUM(no_read/total) OVER w)/(:movAvgMin+1), 4) AS no_read_percent, + ROUND((SUM(no_code/total) OVER w)/(:movAvgMin+1), 4) AS no_code_percent, + ROUND((SUM(multi_label/total) OVER w)/(:movAvgMin+1), 4) AS multi_label_percent, + /* Sorter Error Percents: */ + ROUND((SUM(gap_err/total) OVER w)/(:movAvgMin+1), 4) AS gap_err_percent, + ROUND((SUM(div_fail/total) OVER w)/(:movAvgMin+1), 4) AS div_fail_percent, + ROUND((SUM(dest_none/total) OVER w)/(:movAvgMin+1), 4) AS dest_none_percent, + ROUND((SUM(lost/total) OVER w)/(:movAvgMin+1), 4) AS lost_percent +FROM SORTERS +WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW); \ No newline at end of file diff --git a/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 b/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 new file mode 100644 index 00000000..23eca822 --- /dev/null +++ b/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 @@ -0,0 +1,104 @@ +import os +import shutil +from com.inductiveautomation.ignition.common.model import ApplicationScope + +os_symlink = getattr(os, "symlink", None) +if callable(os_symlink): + pass +else: + def symlink_ms(source, link_name): + import ctypes + csl = ctypes.windll.kernel32.CreateSymbolicLinkW + csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32) + csl.restype = ctypes.c_ubyte + flags = 1 if os.path.isdir(source) else 0 + if csl(link_name, source, flags) == 0: + raise ctypes.WinError() + os.symlink = symlink_ms + +############# +### Constants +############# +WP = os.path.join(os.getcwd(), "webserver", "webapps", "main", "documents") +DP = WP#"D:\\Ignition\\Documents" +#if not os.path.exists("D:\\"): + # Not on actual production server, so store locally: + #DP = "Ignition\\Documents" +if ApplicationScope.isGateway(ApplicationScope.getGlobalScope()) and not os.path.exists(DP): + os.makedirs(DP) + #os.symlink(DP, WP) + # The above symlink doesn't work on windows due to process permissions. Need to manually set up: + # mklink /J "C:\\Program Files\\Inductive Automation\\Ignition\\webserver\\webapps\\main\\documents" D:\\Ignition\\Documents + +PDF_ICON = { + "path": "material/picture_as_pdf", + "color": "#869DB1", + "style": {} +} + + +####################################################### +####################################################### +####################################################### +#### Functions +####################################################### + +def getFileTree(path, phantomPath=""): + files = [] + for f in os.listdir(path): + filepath = os.path.join(path, f) + filephantompath = os.path.join(phantomPath, f) + # Check what type of file: + if os.path.isfile(filepath): + # Add leaf node (file) if pdf: + if f.endswith(".pdf"): + files.append({ + "label": f, + "expanded": False, + "icon": PDF_ICON, + "data": filephantompath, + "items": [] + }) + elif os.path.isdir(filepath): + # Add folder: + files.append({ + "label": f, + "expanded": False, + "data": "", + "items": getFileTree(filepath, filephantompath) + }) + # Return list: + return files + + +def getDocuments(): + # Return list: + return getFileTree(DP) + +def createFolder(folderpath): + if not os.path.exists(folderpath): + os.makedirs(os.path.join(DP, folderpath)) + +def uploadDocument(file, folder=""): + filename = os.path.join(DP, folder, file.name) + if filename[-4:].lower() <> ".pdf": + system.perspective("File extension not compatible!\r\nThe supported extensions are: pdf") + else: + filepath = os.path.join(DP, filename) + #if system.file.fileExists(filepath): + #return "Config file already exists!\r\nYou must delete the config before uploading over it." + file.copyTo(filepath) + #system.file.writeFile(filepath, contents, False) + +def deleteDocuments(filenames): + for filename in filenames: + filepath = os.path.join(DP, filename) + try: + if os.path.isfile(filepath): + os.remove(filepath) + elif os.path.isdir(filepath): + shutil.rmtree(filepath) + else: + pass#return "Config file doesn't exist!" + except: + system.perspective.print("Failed to delete "+filename) \ No newline at end of file diff --git a/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 b/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 new file mode 100644 index 00000000..83e984f7 --- /dev/null +++ b/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 @@ -0,0 +1,535 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 2529, + "width": 4892 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Inbound" + }, + "position": { + "height": 651, + "width": 1687, + "x": 122, + "y": 1868.22 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "HSS_Singulator" + }, + "position": { + "height": 1601, + "width": 949, + "x": 10, + "y": 301 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "HSS_Sorter" + }, + "position": { + "height": 1973, + "width": 4223, + "x": 522, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Inbound" + }, + "position": { + "height": 800, + "width": 636, + "x": 1802, + "y": 1450 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Singulator" + }, + "position": { + "height": 508, + "width": 1103, + "x": 2076, + "y": 1032 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Sorter" + }, + "position": { + "height": 517, + "width": 1434, + "x": 2983, + "y": 1033 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Problem_Solve" + }, + "position": { + "height": 286, + "width": 928, + "x": 2530, + "y": 1125 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Problem_Solve", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Runout" + }, + "position": { + "height": 1467, + "width": 709, + "x": 4172, + "y": 841 + }, + "props": { + "path": "Windows/Graphics/Templates/Runout", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Inbound" + }, + "position": { + "height": 40, + "width": 106, + "x": 1017, + "y": 1740 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 497, + "y": 920 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 1760, + "y": 120 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Inbound" + }, + "position": { + "height": 40, + "width": 110, + "x": 2537, + "y": 2000 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 2797, + "y": 1640 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 3774, + "y": 1266 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 3007, + "y": 910 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 4607, + "y": 1662 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\tself.meta.visible \u003d True\n\telse:\n\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopSystem", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 982 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPaths": [ + "[default]MCP01/MCP01", + "[default]MCP02/MCP02", + "[default]MCP03/MCP03", + "[default]MCP20/MCP20", + "[default]MCP21/MCP21" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\tself.meta.visible \u003d True\n\telse:\n\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopHSS", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 1172 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPath": "[default]HSSStatus", + "tagPaths": [ + "[default]MCP02/MCP02", + "[default]MCP03/MCP03", + "[default]MCP21/MCP21" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\t\tself.meta.visible \u003d True\n\telse:\n\t\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopOXD", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 1362 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPath": "[default]OXDStatus", + "tagPaths": [ + "[default]MCP01/MCP01", + "[default]MCP20/MCP20" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.tag.writeBlocking(\"[default]MCP21/Verify_Inspection\", 1)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 144, + "width": 344, + "x": 387.5, + "y": 678 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "isAuthorized(true, \u0027Authenticated/Roles/Administrator\u0027) ||\r\nisAuthorized(true, \u0027Authenticated/Roles/Maintenance\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FF0000" + }, + "text": "Shoe Pin Fault Reset", + "textStyle": { + "backgroundColor": "#FF0000", + "borderColor": "#FF0000", + "color": "#000000", + "fontSize": 28, + "outlineColor": "#FF0000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 b/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 new file mode 100644 index 00000000..311a0cc0 --- /dev/null +++ b/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 @@ -0,0 +1,38 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(success*60) AS success_pph, + ROUND(awcs*60) AS awcs_issues_pph, + ROUND(operational*60) AS operational_issues_pph, + ROUND(machine*60) AS machine_issues_pph, + ROUND(scanner*60) AS scanner_issues_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd b/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd new file mode 100644 index 00000000..90afc57c --- /dev/null +++ b/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd @@ -0,0 +1,6838 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 515, + "width": 1434 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PS01_08" + }, + "position": { + "height": 20, + "width": 118, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_09" + }, + "position": { + "height": 20, + "width": 18, + "x": 117, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_10" + }, + "position": { + "height": 20, + "width": 18, + "x": 134, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_11" + }, + "position": { + "height": 20, + "width": 18, + "x": 151, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_12" + }, + "position": { + "height": 20, + "width": 18, + "x": 168, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_13" + }, + "position": { + "height": 20, + "width": 18, + "x": 185, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_14" + }, + "position": { + "height": 20, + "width": 18, + "x": 202, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_15" + }, + "position": { + "height": 20, + "width": 57, + "x": 219, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_16" + }, + "position": { + "height": 20, + "width": 57, + "x": 275, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_17" + }, + "position": { + "height": 20, + "width": 18, + "x": 331, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_18" + }, + "position": { + "height": 20, + "width": 18, + "x": 348, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_19" + }, + "position": { + "height": 20, + "width": 18, + "x": 365, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_20" + }, + "position": { + "height": 20, + "width": 18, + "x": 382, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_21" + }, + "position": { + "height": 20, + "width": 18, + "x": 399, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 320, + "x": 1232, + "y": 376 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 550, + "x": 1213, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 550, + "x": 664, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_01" + }, + "position": { + "height": 20, + "width": 997, + "x": 416, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 451, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH68" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1214, + "y": 453 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH69" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1232, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 1212, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "SO01_CH02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 471, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH02" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 506, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH03" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 526, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH04" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 527, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH05" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 547, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH06" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 548, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH07" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 568, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH08" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH09" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 569, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH09" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 589, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH10" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 590, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH11" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH12" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 610, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH12" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH13" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 611, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH13" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH14" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 631, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH14" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH15" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 632, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH15" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH16" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 652, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH16" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH17" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 653, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH17" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH18" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 673, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH18" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH19" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 674, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH19" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH20" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 694, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH20" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH21" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 695, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH21" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH22" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 715, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH22" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH23" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 716, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH23" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH24" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 736, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH24" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH25" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 737, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH25" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH26" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 757, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH26" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH27" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 758, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH27" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH28" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 778, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH28" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH29" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 779, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH29" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH30" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 799, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH30" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH31" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 800, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH31" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH32" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 820, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH32" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH33" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 821, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH33" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH34" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 841, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH34" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH35" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 842, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH35" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH36" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 862, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH36" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH37" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 863, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH37" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH38" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 883, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH38" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH39" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 884, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH39" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH40" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 904, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH40" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH41" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 905, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH41" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH42" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 925, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH42" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH43" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 926, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH43" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH44" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 946, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH44" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH45" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 947, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH45" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH46" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 967, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH46" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH47" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 968, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH47" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH48" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 988, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH48" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH49" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 989, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH49" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH50" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1009, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH50" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH51" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1010, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH51" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH52" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1030, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH52" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH53" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1031, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH53" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH54" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1051, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH54" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH55" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1052, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH55" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH56" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1072, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH56" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH57" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1073, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH57" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH58" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1093, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH58" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH59" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1094, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH59" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH60" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1114, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH60" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH61" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1115, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH61" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH62" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1135, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH62" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH63" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1136, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH63" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH64" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1156, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH64" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH65" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1157, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH65" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH66" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1177, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH66" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH67" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1194, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH67" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH70" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1252, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH70" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT1" + }, + "position": { + "height": 29, + "width": 27, + "x": 315, + "y": 381 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT1" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT2" + }, + "position": { + "height": 29, + "width": 27, + "x": 423, + "y": 475 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT2" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT3" + }, + "position": { + "height": 29, + "width": 27, + "x": 1333, + "y": 487 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT3" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT4" + }, + "position": { + "height": 29, + "width": 27, + "x": 1360, + "y": 404 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT4" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT5" + }, + "position": { + "height": 29, + "width": 27, + "x": 1413, + "y": 426 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT5" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCP20" + }, + "position": { + "height": 20, + "width": 50, + "x": 138, + "y": 386 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/MCP20/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS01_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 63, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 118, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 135, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 152, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 169, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 186, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 203, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 237, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_16_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 315, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_17_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 332, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_18_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 349, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_19_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 366, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_20_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 383.24, + "y": 413.769 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_21_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 400.24, + "y": 413.769 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 251.333 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 934 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 204 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1328, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO01_01_ENC" + }, + "position": { + "height": 16, + "rotate": { + "angle": "270deg" + }, + "width": 16, + "x": 1395, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/ENC/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "PS01_08_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 24, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_08_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 80, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 71 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1396, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_08_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 62, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 81, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 23, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 42, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_16_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 275, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_16_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 294, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 92 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 111 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1284, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1322, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1341, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 55, + "y": 476 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_08_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 24, + "y": 476 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_11_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 145, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 802, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 771, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0102_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 456, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0102/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0304_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 512, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0304/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0506_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 533, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0506/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0708_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 554, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0708/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0910_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 575, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0910/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1112_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 596, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1112/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1314_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 617, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1314/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1516_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 638, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1516/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1718_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 659, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1718/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1920_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 680, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1920/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2122_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 701, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2122/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2324_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 722, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2324/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2526_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 743, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2526/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2728_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 764, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2728/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2930_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 785, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2930/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3132_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 805, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3132/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3334_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 826, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3334/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3536_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 847, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3536/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3738_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 868, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3738/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3940_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 889, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3940/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4142_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 910, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4142/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4344_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 932, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4344/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4546_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 952, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4546/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4748_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 973, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4748/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4950_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 994, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4950/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5152_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1015, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5152/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5354_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1036, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5354/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5556_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1057, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5556/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5758_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1077, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5758/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5960_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1098, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5960/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6162_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1119, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6162/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6364_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1141, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6364/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6566_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1162, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6566/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6768_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1200, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6768/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6970_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1225, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6970/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 435, + "y": 423 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH68_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1178, + "y": 495 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH69_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1216, + "y": 423 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_08_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 45, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_08_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 23, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_08_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 23, + "y": 396 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 396 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 366 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 281, + "y": 366 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1274, + "y": 107 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1274, + "y": 92 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 470 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1267, + "y": 455 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1362, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1305, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 392 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 377 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 407 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/GRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 489, + "y": 407 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH68_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 482 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH68_BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 497 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/BCN1/GRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH69_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 396 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH69_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SCN01_01" + }, + "position": { + "height": 12, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 24, + "x": 206, + "y": 479 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SCN01/SCN01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "PS01_08_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 106, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_09_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 121, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_10_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_11_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 155, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_12_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 172, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_13_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 189, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_15_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 221, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_16_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 318, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_17_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 335, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_18_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 352, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_19_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 369, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_20_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 386, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_21_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 403, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1262, + "y": 68 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_01_PE2" + }, + "position": { + "height": 10, + "width": 34, + "x": 1222, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 675, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1194, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 126, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE01" + }, + "position": { + "height": 5, + "width": 122, + "x": 436, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE01/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE02" + }, + "position": { + "height": 5, + "width": 122, + "x": 436, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE02/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE03" + }, + "position": { + "height": 5, + "width": 83, + "x": 559, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE03/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE04" + }, + "position": { + "height": 5, + "width": 83, + "x": 559, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE04/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE05" + }, + "position": { + "height": 5, + "width": 83, + "x": 643, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE05/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE06" + }, + "position": { + "height": 5, + "width": 83, + "x": 643, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE06/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE07" + }, + "position": { + "height": 5, + "width": 82, + "x": 727, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE07/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE08" + }, + "position": { + "height": 5, + "width": 82, + "x": 727, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE08/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE09" + }, + "position": { + "height": 5, + "width": 83, + "x": 810, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE09/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE10" + }, + "position": { + "height": 5, + "width": 83, + "x": 810, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE10/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE11" + }, + "position": { + "height": 5, + "width": 83, + "x": 894, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE11/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE12" + }, + "position": { + "height": 5, + "width": 83, + "x": 894, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE12/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE13" + }, + "position": { + "height": 5, + "width": 83, + "x": 978, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE13/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE14" + }, + "position": { + "height": 5, + "width": 83, + "x": 978, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE14/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE15" + }, + "position": { + "height": 5, + "width": 84, + "x": 1062, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE15/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE16" + }, + "position": { + "height": 5, + "width": 84, + "x": 1062, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE16/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE17" + }, + "position": { + "height": 5, + "width": 124, + "x": 1147, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE17/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE18" + }, + "position": { + "height": 5, + "width": 124, + "x": 1147, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE18/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 418, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1218, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1256, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1321, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1331, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1341, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE7" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1351, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TREY_PE1" + }, + "position": { + "height": 5, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 10, + "x": 1352, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TREY_PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TREY_PE2" + }, + "position": { + "height": 5, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 10, + "x": 1358, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TREY_PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Overflow_at_max_lbl" + }, + "position": { + "height": 40, + "width": 60, + "x": 1340, + "y": 356 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "coalesce({[default]MCP20_Custom/SO01_01_HMI_OverflowNotAvailable}, false)" + }, + "type": "expr" + } + }, + "props.style.background-color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ToggleTag" + }, + "transforms": [ + { + "fallback": "#FF0", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00F" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ToggleTag" + }, + "transforms": [ + { + "fallback": "#000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "fontSize": "10px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "OVERFLOW NOT AVAILABLE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO01_01_LS1" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/LS1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "SO01_01_DIV" + }, + "position": { + "height": 20, + "width": 30, + "x": 1231, + "y": 434 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "originSide": "right" + }, + "status": { + "color": "#FFF", + "isExtended": true, + "isRetracted": false, + "tooltip": "SO1-1.DIV\u003cbr\u003eStatus: Non-powered" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "SO01_01_LS2" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/LS2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "SO01_01_PS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 429, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PS1/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PS" + } + }, + "type": "dex.display.limitswitch" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 b/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 new file mode 100644 index 00000000..ab6958b4 --- /dev/null +++ b/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a b/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a new file mode 100644 index 00000000..9b3a4534 --- /dev/null +++ b/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a @@ -0,0 +1,509 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280, + "width": 877 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\t\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.columns[3].visible": { + "binding": { + "config": { + "expression": " {view.params.deviceType}\u003d\"conveyor\"\r\n||{view.params.deviceType}\u003d\"conveyorycurve\"\r\n||{view.params.deviceType}\u003d\"gaylord\"\r\n||{view.params.deviceType}\u003d\"chutedestination\"\r\n||{view.params.deviceType}\u003d\"spiralchute\"\r\n||{view.params.deviceType}\u003d\"divchute\"\r\n||{view.params.deviceType}\u003d\"rrchute\"\r\n||{view.params.deviceType}\u003d\"mcp\"" + }, + "type": "expr" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priority": "0", + "tagPath": "if(\t {view.params.deviceType}\u003d\"conveyor\"\r \t||{view.params.deviceType}\u003d\"conveyorycurve\"\r \t||{view.params.deviceType}\u003d\"gaylord\"\r \t||{view.params.deviceType}\u003d\"mcp\",\r \t// Give parent folder:\r\tsubstring(\r\t\treplace({view.params.props.status.tagPath}, \"/Graphics\", \"\"),\r\t\t0,\r\t\tlastIndexOf(\r\t\t\treplace({view.params.props.status.tagPath}, \"/Graphics\", \"\"),\r\t\t\t\"/\"\r\t\t)\r\t),\r\t{view.params.props.status.tagPath}\r )\r " + }, + "queryPath": "Alarms/DeviceHistory" + }, + "transforms": [ + { + "code": "\toutput_json \u003d []\n\t# Transform dataset into json:\n\tfor row in range(value.getRowCount()):\n\t\trow_object \u003d {\"value\": {}}\n\t\t# Populate row values:\n\t\tfor col in range(value.getColumnCount()):\n\t\t\trow_object[\"value\"][value.getColumnName(col)] \u003d value.getValueAt(row, col)\n\t\t\t# Check if endtime isn\u0027t reached:\n\t\t\tif value.getColumnName(col) \u003d\u003d \u0027endtime\u0027 and value.getValueAt(row, col) in [None, \"\"]:\n\t\t\t\trow_object[\u0027style\u0027] \u003d {\"background\": \"#F4B084\"}\n\t\t# Append to json output:\n\t\toutput_json.append(row_object)\n\t# Return as json:\n\treturn output_json", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "starttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "endtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Device" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 250 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Alarm History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a b/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a new file mode 100644 index 00000000..0e2bded7 --- /dev/null +++ b/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 b/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 new file mode 100644 index 00000000..3fc7daed --- /dev/null +++ b/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 @@ -0,0 +1,445 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "[default]MCP01/UL01/UL01_01/Conv", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "expression": "if(toBoolean(now(5000), false),\r\n\t{view.params.props.status.tagPath},\r\n\t{view.params.props.status.tagPath}\r\n)" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\tvalue \u003d tags.getOPCTags(value)\n\theaders \u003d [\"tagName\", \"tagType\", \"tagPath\", \"tagDocumentation\", \"tagValue\"]\n\tresult \u003d reports.readJsonTable(headers, value)\n\treturn result[\"data\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagName", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Name" + }, + "justify": "left", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagType", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Type" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 60 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagPath", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "OPC Path" + }, + "justify": "left", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagDocumentation", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Documentation" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagValue", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Value" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + } + ], + "data": [ + { + "tagDocumentation": "", + "tagName": "Flt_CB", + "tagPath": "[MCP01]UL01_01.Fault.Flt_CB", + "tagType": "opc", + "tagValue": { + "style": { + "background": "#F88" + }, + "value": "ERR: NOT FOUND" + } + }, + { + "tagDocumentation": "", + "tagName": "Flt_CB", + "tagPath": "[MCP01]UL01_01.Fault.Flt_CB", + "tagType": "opc", + "tagValue": { + "style": { + "background": "#F88" + }, + "value": "ERR: NOT FOUND" + } + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Tags\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f b/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f new file mode 100644 index 00000000..0f027f99 --- /dev/null +++ b/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f @@ -0,0 +1,526 @@ +{ + "custom": {}, + "params": { + "fontSize": "16px", + "label": null, + "showIcons": true, + "tagPath": "", + "view": "" + }, + "propConfig": { + "params.fontSize": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.showIcons": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 60, + "width": 130 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\n\tjsonGet({value}, \u0027tooltip\u0027),\n\t\"Tooltip not configured\"\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "paddingBottom": "10%" + }, + "text": "", + "textStyle": { + "fontsize": "12px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "width": "100%" + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "transforms": [ + { + "fallback": "50%", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "100%" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.alignVertical": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "transforms": [ + { + "fallback": "bottom", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "center" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.fontSize": { + "binding": { + "config": { + "path": "view.params.fontSize" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label},\nif(isGood({value}),\n\t{value},\n\t\"Unknown\"\n))", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "fontWeight": "bold", + "pointer-events": "none", + "textAlign": "center", + "textTransform": "uppercase", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Alarm_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.0385, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/General_Alarm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#000000" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/notifications_active" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Emergency_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.2308, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Estop_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FF0000" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/all_out" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Jam_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.4231, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FF8C00" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/skip_next" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Full_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.6154, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#0000FF" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/skip_next" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Manual_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.8077, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Manual_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#AC5F00" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/build" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "Icons" + }, + "position": { + "height": "50%", + "width": "100%", + "y": "50%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "type": "property" + } + } + }, + "props": { + "aspectRatio": "65:15", + "mode": "percent", + "style": { + "overflow": "hidden", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Label\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c b/.resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c new file mode 100644 index 00000000..b7c4ddf8 Binary files /dev/null and b/.resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c differ diff --git a/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 b/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 new file mode 100644 index 00000000..7d6c312e --- /dev/null +++ b/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 @@ -0,0 +1,14 @@ +SELECT s01_timestamp AS induct_timestamp, + s04_timestamp AS confirm_timestamp, + sorter, trackid, scanner, + bcr_imgid AS imgid, s01_barcode AS barcode, scanner_status, + pkg_length/10 AS pkg_length, /* In inches */ + carriers AS trays, + assignments, divert_status, + destination_req AS requested_dest, + destination_act AS diverted_dest, + sort_code +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +ORDER BY s04_timestamp DESC +LIMIT 4000; \ No newline at end of file diff --git a/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 b/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 new file mode 100644 index 00000000..cfcac7b2 --- /dev/null +++ b/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 b/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 new file mode 100644 index 00000000..e89425f4 --- /dev/null +++ b/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 @@ -0,0 +1,287 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "ENC1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Encoder" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 b/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 new file mode 100644 index 00000000..b2069649 --- /dev/null +++ b/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(255,255,0,1) 0%, rgba(245,245,0,1) 70%, rgba(208,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(255,255,0,1) 0%, rgba(245,245,0,1) 70%, rgba(208,208,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,208,0,1) 0%, rgba(208,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 b/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 new file mode 100644 index 00000000..a404b419 --- /dev/null +++ b/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 @@ -0,0 +1,322 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 110 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "90%", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "90%", + "y": "10" + } + ], + "viewBox": "0 0 110 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea b/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea new file mode 100644 index 00000000..a041d9f9 --- /dev/null +++ b/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "EPC1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "base": "#FFF", + "button": "#0F0" + }, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EPC" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 b/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 new file mode 100644 index 00000000..e29e0ac2 --- /dev/null +++ b/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 @@ -0,0 +1,4 @@ +{ + "type": "AllOf", + "securityLevels": [] +} \ No newline at end of file diff --git a/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 b/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 new file mode 100644 index 00000000..4bfcd6d7 --- /dev/null +++ b/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#00CC00" + } + } +} \ No newline at end of file diff --git a/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 b/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 new file mode 100644 index 00000000..07b3aeae --- /dev/null +++ b/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 @@ -0,0 +1,382 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"deviceType\": event.value[\"deviceType\"],\n\t\t\"props\": {\n\t\t\t\"status\": {\n\t\t\t\t\"tagPath\": event.value[\"tagPath\"]\n\t\t\t}\n\t\t},\n\t\t\"meta\": {\n\t\t\t\"name\": event.value[\"device\"]\n\t\t},\n\t\t\"tabs\": [\"Status\"]\n\t}\n\t# Close the current popup:\n\t# NOTE: We close before opening the new popup because the pageId changes when opening a new popup\n\tif not self.session.custom.isMobile:\n\t\t#system.perspective.closePopup(\"\")\n\t\tpass\n\t# Open new popup:\n\tpopups.openDevice(params, event.value[\"device\"], self.session.custom.isMobile)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.devices": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\tif self.view.params.deviceType \u003d\u003d \"mcp\":\n\t\treturn tags.getSiblingDevices(value, [\"conveyor\", \"conveyorcurve\", \"gaylord\"])\n\telif self.view.params.deviceType \u003d\u003d \"chutedestination\":\n\t\treturn tags.getSiblingDevices(value + \"/Chute\", filterTagPath\u003dFalse)\n\telif self.view.params.deviceType \u003d\u003d \"spiralchute\":\n\t\treturn tags.getSiblingDevices(value + \"/CH\", filterTagPath\u003dFalse)\n\telif self.view.params.deviceType \u003d\u003d \"divchute\":\n\t\treturn tags.getSiblingDevices(value + \"/Conv\", filterTagPath\u003dFalse)\n\telse:\n\t\treturn tags.getSiblingDevices(value)", + "type": "script" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "expression": "if(toBoolean(now(5000), false),\r\n\t{this.custom.devices},\r\n\t{this.custom.devices}\r\n)" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\theaders \u003d [\"device\", \"status\", \"tagPath\", \"deviceType\"]\n\tresult \u003d reports.readJsonTable(headers, value)\n\treturn result[\"data\"]", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Device" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 225 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "status", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagPath", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "deviceType", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Type" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 150 + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Devices\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 b/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 new file mode 100644 index 00000000..48d3e05a --- /dev/null +++ b/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 @@ -0,0 +1,7 @@ +SELECT DISTINCT induct +FROM package_history +UNION +SELECT DISTINCT lane_id AS induct +FROM pe_history +WHERE lane_id LIKE "UL%" +ORDER BY induct ASC; \ No newline at end of file diff --git a/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa b/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa new file mode 100644 index 00000000..b9954af2 --- /dev/null +++ b/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa @@ -0,0 +1,415 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "chuteNum": "", + "isClickable": true, + "mirror": false, + "tagPath": "MCP05/PS01/PS01_28CH" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.chuteNum": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 92, + "width": 94 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 48, + "rotate": { + "anchor": "0 0", + "angle": 90 + }, + "width": 89, + "x": 69, + "y": 1 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.config.showLabel": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Parameters.LabelFull" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1) translateY(-100%)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "y": 3 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 18 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 6 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 b/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 new file mode 100644 index 00000000..7794282b --- /dev/null +++ b/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 @@ -0,0 +1,685 @@ +{ + "custom": { + "title": "" + }, + "params": {}, + "permissions": { + "securityLevels": [], + "type": "AllOf" + }, + "propConfig": { + "custom.title": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Table" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "calc(100% - 250px)", + "x": 250, + "y": 40 + }, + "props": { + "style": { + "border-left": "2px solid #000", + "min-width": "450px" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "LabelHeader" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " \"Custom Reports\"\r\n+if(len({view.custom.title})\u003e0, \" - \" + {view.custom.title}, \"\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# Grab Data:\n\ttable \u003d self.parent.getChild(\"Table\").getChild(\"Table\")\n\tdata \u003d utils.downloadCSV(table, self.view.custom.title)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\treportTree \u003d self.getSibling(\"ReportTree\")\n\treportTree.meta.visible \u003d not reportTree.meta.visible" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Mode" + }, + "position": { + "height": 32, + "width": 85, + "x": 4, + "y": 4 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({../ReportTree.meta.visible},\r\n\t\"Files\",\r\n\t\"Reports\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "enabled": false, + "style": { + "classes": "Buttons/Grey" + }, + "text": "Files" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "PABE2XXI", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Upload Custom Report", + "type": "open", + "viewPath": "Popups/CustomReports/ConfigUpload" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button_UploadConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 85, + "x": 93, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Upload" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# Get filenames:\n\ttree \u003d self.getSibling(\u0027ReportTree\u0027)\n\tfilenames \u003d [sel.value for sel in tree.props.selectionData]\n\t\n\terr \u003d reports.downloadConfigs(filenames)\n\n\t# Check if err:\n\tif err is not None:\n\t\tsystem.gui.messageBox(err, \"Error\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DownloadConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 95, + "x": 182, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../ReportTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Download" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "5QyUoYBU", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Delete Confirmation", + "type": "open", + "viewParams": { + "filenames": "{/root/ReportTree.props.selectionData}" + }, + "viewPath": "Popups/CustomReports/DeleteConfirmation" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button_DeleteConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 85, + "x": 281, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../ReportTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Delete" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "FileTree", + "visible": false + }, + "position": { + "height": "calc(100% - 97px)", + "width": 250, + "y": 65 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "!{../ReportTree.meta.visible}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "color": "#5F707E", + "path": "material/folder" + }, + "empty": { + "color": "#869DB1", + "path": "material/stop" + }, + "expanded": { + "color": "#5F707E", + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "color": "#869DB1", + "path": "material/arrow_right" + }, + "empty": { + "color": "#869DB1" + }, + "expanded": { + "color": "#869DB1", + "path": "material/arrow_drop_down" + } + }, + "selectedStyle": { + "backgroundColor": "#BBE0F6", + "color": "#000", + "cursor": "pointer" + }, + "unselectedStyle": { + "classes": "Tree/hoverUnselected", + "cursor": "pointer" + } + } + }, + "type": "ia.display.tree" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.print(self.getSibling(\"FileTree\").props.selection)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DownloadFiles", + "visible": false + }, + "position": { + "height": 32, + "y": "calc(100% - 32px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../FileTree.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "position.width": { + "binding": { + "config": { + "path": "../FileTree.position.width" + }, + "type": "property" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "../FileTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Download Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selectionData\n\tif len(data) \u003d\u003d 1:\n\t\tconfig \u003d data[0].value\n\t\tresults \u003d reports.readTable(config)\n\t\t# Return data table:\n\t\tif \u0027err\u0027 in results:\n\t\t\tsystem.gui.messageBox(results[\u0027err\u0027], \"Error\")\n\t\telse:\n\t\t\ttable \u003d self.getSibling(\"Table\").getChild(\"Table\")\n\t\t\ttable.props.data \u003d results[\u0027data\u0027]\n\t\t\ttable.props.columns \u003d results[\u0027columns\u0027]\n\t\t\tself.view.custom.title \u003d \".\".join(config.split(\".\")[:-1])" + }, + "scope": "G", + "type": "script" + } + }, + "system": { + "onStartup": { + "config": { + "script": "\tself.refreshList()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ReportTree" + }, + "position": { + "height": "calc(100% - 65px)", + "width": 250, + "y": 65 + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "color": "#5F707E", + "path": "material/folder" + }, + "empty": { + "color": "#869DB1", + "path": "material/stop" + }, + "expanded": { + "color": "#5F707E", + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "color": "#869DB1", + "path": "material/arrow_right" + }, + "empty": { + "color": "#869DB1" + }, + "expanded": { + "color": "#869DB1", + "path": "material/arrow_drop_down" + } + }, + "selectedStyle": { + "backgroundColor": "#BBE0F6", + "color": "#000", + "cursor": "pointer", + "user-select": "none" + }, + "unselectedStyle": { + "classes": "Tree/hoverUnselected", + "cursor": "pointer", + "user-select": "none" + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "refreshList", + "params": [], + "script": "\ticons \u003d {\n\t\t\"csv\": {\n\t\t\t\"path\": \"material/table_chart\",\n\t\t\t\"color\": \"#869DB1\"\n\t\t},\n\t\t\"sql\": {\n\t\t\t\"path\": \"material/storage\",\n\t\t\t\"color\": \"#869DB1\"\n\t\t}\n\t}\n\t\n\tconfigs \u003d []\n\troles \u003d self.session.props.auth.user.roles\n\tfor config in reports.getConfigs(roles\u003droles):\n\t\tparts \u003d config.split(\".\")\n\t\tconfigs.append({\n\t\t\t\"label\": \".\".join(parts[:-1]),\n\t\t\t\"expanded\": False,\n\t\t\t\"icon\": icons.get(parts[-1], \"\"),\n\t\t\t\"data\": config,\n\t\t\t\"items\": []\n\t\t})\n\t\n\tself.props.items \u003d configs" + } + ], + "messageHandlers": [ + { + "messageType": "custom-reports-refreshlist", + "pageScope": true, + "script": "\tself.refreshList()", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.tree" + }, + { + "meta": { + "name": "LabelTree" + }, + "position": { + "height": 25, + "width": 250, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({../ReportTree.meta.visible},\r\n\t\"On-Demand Reports\",\r\n\t\"Pre-Run Reports\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "On-Demand Reports" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 b/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 new file mode 100644 index 00000000..ccd23f2e --- /dev/null +++ b/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 @@ -0,0 +1,28 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + sorter, + induct, + COUNT(*) AS total, + SUM(carriers=1) AS single_carrier, + SUM(carriers=2) AS double_carrier + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + single_carrier AS single_carrier_count, + double_carrier AS double_carrier_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(single_carrier*60) AS single_carrier_pph, + ROUND(double_carrier*60) AS double_carrier_pph, + /* Percents: */ + ROUND(total/(SUM(total) OVER(PARTITION BY induct, time)), 4) AS 'total/sorter_percent', + ROUND(single_carrier/total, 4) AS single_carrier_percent, + ROUND(double_carrier/total, 4) AS double_carrier_percent +FROM INDUCTS +WHERE induct = :induct; \ No newline at end of file diff --git a/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c b/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c new file mode 100644 index 00000000..2aeb2280 --- /dev/null +++ b/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c @@ -0,0 +1,3 @@ +SELECT DISTINCT scanner +FROM package_history +ORDER BY scanner ASC; \ No newline at end of file diff --git a/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 b/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 new file mode 100644 index 00000000..6381a937 --- /dev/null +++ b/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF8000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 b/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 new file mode 100644 index 00000000..58a0278f --- /dev/null +++ b/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 @@ -0,0 +1,3 @@ +SELECT DISTINCT induct +FROM package_history +ORDER BY induct ASC; \ No newline at end of file diff --git a/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 b/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 new file mode 100644 index 00000000..033fa6ed --- /dev/null +++ b/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 @@ -0,0 +1,531 @@ +{ + "pages": { + "/": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/GraphicsWrapper" + }, + "/alarms/active": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/history": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/hitlist": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/AlarmWrapper" + }, + "/autStand": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "", + "id": "autStand", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "auto", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 50, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "title": "", + "viewPath": "autStand/Overview/BNA8" + }, + "/cameras": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/JamCameras" + }, + "/commission": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/Commissioning" + }, + "/config": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/ConfigWrapper" + }, + "/custom-reports": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/CustomReports" + }, + "/help": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/Help" + }, + "/mcm01": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "", + "id": "autStand", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "viewPath": "autStand/Detailed_Views/MCM01-FLUID INBOUND" + }, + "/mcm02": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "show", + "iconUrl": "", + "id": "", + "modal": false, + "resizable": false, + "show": "visible", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "title": "", + "viewPath": "autStand/Detailed_Views/MCM02-NC SORTER" + }, + "/statistics": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/Statistics" + }, + "/status": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/StatusWrapper" + } + }, + "sharedDocks": {} +} \ No newline at end of file diff --git a/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 b/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 new file mode 100644 index 00000000..b48a4d63 --- /dev/null +++ b/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 @@ -0,0 +1,621 @@ +{ + "custom": {}, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "9 rows" + }, + "propConfig": { + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ActiveAlarms" + }, + "transforms": [ + { + "expression": "// This expression is only to subscribe to the dropdown value, which is needed to rerun on change.\r\nif({view.params.classDropdownValue}!\u003dNone,\r\n\t{value},\r\n\t{value}\r\n)", + "type": "expression" + }, + { + "code": "\trows \u003d []\n\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") not in self.view.params.classDropdownValue:\n\t\t\trows.append(r)\n\tfilteredValue \u003d system.dataset.deleteRows(value, rows)\n\tcou \u003d utils.getRowCount(filteredValue)\n\tself.view.params.titleExtra \u003d \"{:n} rows\".format(cou)\n\t# Return data\n\treturn filteredValue", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Event Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Active Alarms\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 b/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 new file mode 100644 index 00000000..ce9ca16b --- /dev/null +++ b/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 @@ -0,0 +1,25 @@ +WITH LANES AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + destination_act AS lane, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, s04_act_dest + ORDER BY sorter, s04_act_dest +) +SELECT + start_timestamp, + end_timestamp, + sorter, + lane, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec b/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec new file mode 100644 index 00000000..c56181e5 --- /dev/null +++ b/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec @@ -0,0 +1,83 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + e.id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE e.eventtime BETWEEN :startDate AND :endDate + /* Filter for disabled messages, full messages, and jam messages */ + AND e.displaypath IN ("Available", "Full", "Full Warn", "25% Full Warn", "50% Full Warn", "75% Full Warn", "HMI Chute Disabled", "Jammed", "EStop or Faulted") + /* Filter out system events and active events only */ + AND e.eventflags & 1 != 1 AND e.eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +), HITLIST_DATA AS ( +/* Finally, merge metadata into hitlist */ + SELECT e.id, + e.firsttime, e.lasttime, + SUBSTRING_INDEX(SUBSTRING_INDEX(dtag.strvalue, ']', 1), '[', -1) AS sorter, + SUBSTRING_INDEX(ddevice.strvalue, '.', 1) AS lane, + displaypath AS description, + /* Retrieve instance count and total duration */ + e.count, + e.duration + FROM HITLIST e + /* Lookup PLCTag */ + JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" + /* Lookup Device */ + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +) +SELECT + DATE_FORMAT(MIN(firsttime), '%Y-%m-%d %T') AS start_timestamp, + DATE_FORMAT(MAX(lasttime), '%Y-%m-%d %T') AS end_timestamp, + lane, + /* Counts */ + SUM(IF(description="Available", count, 0)) AS available_count, + SUM(IF(description="Full", count, 0)) AS full_count, + SUM(IF(description IN ("Full Warn", "50% Full Warn"), count, 0)) AS full_warn_count, + SUM(IF(description="25% Full Warn", count, 0)) AS full_warn_25_count, + SUM(IF(description IN ("Full Warn", "50% Full Warn"), count, 0)) AS full_warn_50_count, + SUM(IF(description="75% Full Warn", count, 0)) AS full_warn_75_count, + SUM(IF(description="HMI Chute Disabled", count, 0)) AS disabled_count, + SUM(IF(description="Jammed", count, 0)) AS jam_count, + SUM(IF(description="EStop or Faulted", count, 0)) AS faulted_count, + /* Durations, translated to strings */ + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Available", duration, 0)))) AS CHAR) AS available_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Full", duration, 0)))) AS CHAR) AS full_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description IN ("Full Warn", "50% Full Warn"), duration, 0)))) AS CHAR) AS full_warn_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="25% Full Warn", duration, 0)))) AS CHAR) AS full_warn_25_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description IN ("Full Warn", "50% Full Warn"), duration, 0)))) AS CHAR) AS full_warn_50_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="75% Full Warn", duration, 0)))) AS CHAR) AS full_warn_75_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="HMI Chute Disabled", duration, 0)))) AS CHAR) AS disabled_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Jammed", duration, 0)))) AS CHAR) AS jam_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="EStop or Faulted", duration, 0)))) AS CHAR) AS faulted_duration +FROM HITLIST_DATA +WHERE {where} +GROUP BY lane +ORDER BY lane; \ No newline at end of file diff --git a/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 b/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 new file mode 100644 index 00000000..92691b5a --- /dev/null +++ b/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007DFA", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 b/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 new file mode 100644 index 00000000..ce749f96 --- /dev/null +++ b/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "STN_ENABLE" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "base": "#FFF", + "button": "#0F0" + }, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PushButton" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 b/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 new file mode 100644 index 00000000..8dc85a04 --- /dev/null +++ b/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 @@ -0,0 +1,8 @@ +SELECT DISTINCT destination_act AS lane +FROM package_history +WHERE destination_act IS NOT NULL +UNION +SELECT DISTINCT lane_id AS lane +FROM pe_history +WHERE lane_id LIKE "CH%" OR lane_id LIKE "RS%1CH" +ORDER BY lane ASC; \ No newline at end of file diff --git a/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 b/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 new file mode 100644 index 00000000..1192514d --- /dev/null +++ b/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS induct, + SUM(count) AS total + FROM pe_history FORCE INDEX (timestamp) + WHERE timestamp BETWEEN :startDate AND :endDate + AND (lane_id LIKE "UL%" OR lane_id LIKE "PRS%" OR lane_id LIKE "RE%") + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + induct, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 b/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 new file mode 100644 index 00000000..a0e5019e --- /dev/null +++ b/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 @@ -0,0 +1,702 @@ +{ + "custom": { + "class": 2 + }, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "0 rows" + }, + "propConfig": { + "custom.class": { + "binding": { + "config": { + "path": "view.params.classDropdownValue" + }, + "transforms": [ + { + "code": "\tvalue \u003d list(value)\n\tif \"Message\" in value:\n\t\treturn 0\n\telif \"Warning\" in value:\n\t\treturn 1\n\telif \"Error\" in value:\n\t\treturn 2\n\telse:\n\t\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 650, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "class": "{view.custom.class}", + "endDate": "{session.custom.timewidget.endDate}", + "priority": "0", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Alarms/HitList" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "firsttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "First Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "lasttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Count" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Alarm Hit List\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f b/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f new file mode 100644 index 00000000..a1d0bed5 --- /dev/null +++ b/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f @@ -0,0 +1,4 @@ +SELECT DISTINCT lane_id +FROM pe_history +WHERE lane_id LIKE "RS%4CH" +ORDER BY lane_id; \ No newline at end of file diff --git a/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e b/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e new file mode 100644 index 00000000..0e2d4d71 --- /dev/null +++ b/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e @@ -0,0 +1,3306 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "width": 636 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "GL01_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL02_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 334 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 334 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL03_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 258 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL03_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 258 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 271, + "x": 39, + "y": 456 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 130, + "x": 39, + "y": 186 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 180, + "x": 78, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 293, + "x": 257, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 87, + "x": 549, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_03CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 39, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_03CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "GL01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 390 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "GL02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "GL03_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 238 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "MCP01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 50, + "x": 3, + "y": 218 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/MCP01/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "GL01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL03_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 259 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 281 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 174, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 484, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 573, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL01_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL03_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 358 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 419 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 406, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL03_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL03_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 398 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_02_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 444, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 463, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL01_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL02_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 298 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL03_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 222 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 60, + "y": 443 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 60, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 23, + "y": 149 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 436, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 405, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL01_03_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 426 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 373 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 358 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 297 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL02_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 282 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL03_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 221 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL03_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 198 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 215 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1, + "y": 394 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1, + "y": 379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 70 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 427, + "y": 53 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 427, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_06_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 618, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL02_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL03_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 268 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL03_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 268 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 197 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 282 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 356 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 29, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 256, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_04_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 90, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 548, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 319, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 617, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 505, + "y": 799 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 751 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EPCa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 751 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EPCb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 730 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSa/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 711 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSa/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 711 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSb/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 730 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSb/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 467, + "y": 733 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/BCNa/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_01_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 734 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/BCNb/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 643 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 710 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/PEa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 501 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/PEb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 88, + "x": 505, + "y": 490 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_02_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 462 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/EPB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/SS/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 422 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/SS/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 430 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/BCN/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 445 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/BCN/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 367, + "x": 505, + "y": 403 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 106 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSc/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 96 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNc/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSc/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/PEa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 49 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 48 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/PEb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 488, + "y": 353 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNa/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 110 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNc/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 467, + "y": 110 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNb/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 106 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSb/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSb/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 66 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EPCa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 66 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EPCb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "MCP05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0 ", + "angle": "270deg" + }, + "width": 50, + "x": 526, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/MCP05/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "UNL13_01_SEIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SEIO/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": "SEIO" + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_01_EIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 473, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EIO/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_EIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EIOa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_EIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 473, + "y": 212 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EIOb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_SEIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 212 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/SEIO/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": "SEIO" + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_02_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 547, + "y": 462 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_02/EGS/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f b/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f new file mode 100644 index 00000000..28f843d8 --- /dev/null +++ b/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f @@ -0,0 +1,38 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + sorter, + induct, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +), SORTERS AS ( + SELECT + start_timestamp, + sorter, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter, start_timestamp +) +SELECT + I.start_timestamp, + hour, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + I.total AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE induct=:induct AND I.sorter=S.sorter AND I.start_timestamp=S.start_timestamp +ORDER BY start_timestamp ASC; \ No newline at end of file diff --git a/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 b/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 new file mode 100644 index 00000000..3e50351d --- /dev/null +++ b/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 @@ -0,0 +1,68 @@ +def getStatusColor(): + # Check PLC statuses: + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") <> "Connected": + return "#F00" + # Check Database statuses: + databases = system.db.getConnections() + for database in range(databases.getRowCount()): + if databases.getValueAt(database, "Status") <> "Valid": + return "#00F" + # Everything is okay: + return "#0F0" + + +def getStatusTooltip(): + tooltip = ["Connection Status", ""] + # Check PLC statuses: + devices = system.device.listDevices() + devices = system.dataset.sort(devices, "Name") + for device in range(devices.getRowCount()): + name = devices.getValueAt(device, "Name") + status = devices.getValueAt(device, "State") + tooltip.append(name+": "+status) + # Check Database statuses: + databases = system.db.getConnections() + databases = system.dataset.sort(databases, "Name") + for database in range(databases.getRowCount()): + name = databases.getValueAt(database, "Name") + status = databases.getValueAt(database, "Status") + if status == "Valid": + status = "Connected" + tooltip.append(name+": "+status) + # Return tooltip: + return "
".join(tooltip) + +def getFireAlarm(): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/Alarms/FireAlarm") + # Read values: + return max(v.value for v in system.tag.readBlocking(paths) if v.quality.isGood()) + +def getPowerSaveMin(): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/PowerSaveMin") + # Read values: + return min(v.value for v in system.tag.readBlocking(paths) if v.quality.isGood()) + +def setPowerSaveMin(value): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/PowerSaveMin") + # Write values: + system.tag.writeBlocking(paths, [value]*len(paths)) \ No newline at end of file diff --git a/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e b/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e new file mode 100644 index 00000000..48d6ed05 --- /dev/null +++ b/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e @@ -0,0 +1,98 @@ +WITH DISABLE_EVENTS AS ( + /* Group related active & clear events into a single row */ + SELECT + id, + NOT eventtype AS eventtype, + IF(eventtype = 1, COALESCE(LEAD(eventid, 1) OVER w, source), eventid) AS eventid, + source, /* Unique alarm path in Ignition */ + eventtime, + displaypath /* Get description */ + FROM alarm_events + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN (:startDate - INTERVAL 4 DAY) AND (:endDate + INTERVAL 4 DAY) + /* Filter for disabled messages, full messages, and jam messages */ + AND displaypath = "HMI Chute Disabled" + AND (source LIKE "%MCP05/%" or source LIKE "%MCP06/%") + /* Filter out system events and filter for active/clear events only */ + AND eventflags & 1 != 1 AND eventtype IN (0, 1) + WINDOW w AS (PARTITION BY source ORDER BY eventtime ASC) +), ENABLES AS ( + /* Group related active & clear events into a single row */ + SELECT + eventid, + SUBSTRING_INDEX(ANY_VALUE(ddevice.strvalue), '.', 1) AS lane, + GREATEST(COALESCE(MIN(IF(eventtype=0, eventtime, NULL)), (:startDate - INTERVAL 4 DAY)), :startDate) AS starttime, + LEAST(COALESCE(MAX(IF(eventtype=1, eventtime, NULL)), LEAST(NOW(), (:endDate + INTERVAL 4 DAY))), :endDate) AS endtime, + ANY_VALUE(displaypath) AS displaypath /* Get description */ + FROM DISABLE_EVENTS e + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" + GROUP BY eventid + HAVING endtime >= :startDate AND starttime <= :endDate + ORDER BY starttime ASC +), STATES AS ( + /* Group related active & clear events into a single row */ + SELECT + eventid, + SUBSTRING_INDEX(ANY_VALUE(ddevice.strvalue), '.', 1) AS lane, + GREATEST(COALESCE(MIN(IF(eventtype=0, eventtime, NULL)), (:startDate - INTERVAL 4 DAY)), :startDate) AS starttime, + LEAST(COALESCE(MAX(IF(eventtype=1, eventtime, NULL)), LEAST(NOW(), (:endDate + INTERVAL 4 DAY))), :endDate) AS endtime, + ANY_VALUE(displaypath) AS displaypath /* Get description */ + FROM alarm_events e + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN (:startDate - INTERVAL 4 DAY) AND (:endDate + INTERVAL 4 DAY) + /* Filter for disabled messages, full messages, and jam messages */ + AND displaypath IN ("Full", "Full Warn", "25% Full Warn", "50% Full Warn", "75% Full Warn", "Jammed", "EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted") + AND (source LIKE "%MCP05/%" or source LIKE "%MCP06/%") + /* Filter out system events and clear events only */ + AND eventflags & 1 != 1 AND eventtype IN (0, 1) + GROUP BY eventid + HAVING endtime >= :startDate AND starttime <= :endDate +), COMBINED AS ( + SELECT + /* Meta */ + MIN(LEAST(e.starttime, COALESCE(s.starttime, e.starttime))) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(GREATEST(e.endtime, COALESCE(s.endtime, e.endtime))) AS lasttime, /* Get the latest it's been active in the given time range */ + MAX(e.lane) AS lane, /* Use latest id to get the latest metadata */ + /* Durations */ + TIME_TO_SEC(TIMEDIFF(e.endtime, e.starttime)) AS enabled_duration, + SUM(IF(s.displaypath="25% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full25_duration, + SUM(IF(s.displaypath IN ("Full Warn", "50% Full Warn"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full50_duration, + SUM(IF(s.displaypath="75% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full75_duration, + SUM(IF(s.displaypath="Full", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full100_duration, + SUM(IF(s.displaypath="Jammed", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS jammed_duration, + SUM(IF(s.displaypath IN ("EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS faulted_duration#, + /* Max Durations */ + #TIME_TO_SEC(TIMEDIFF(e.endtime, e.starttime)) AS enabled_duration_max, + #MAX(IF(s.displaypath="25% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full25_duration_max, + #MAX(IF(s.displaypath IN ("Full Warn", "50% Full Warn"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full50_duration_max, + #MAX(IF(s.displaypath="75% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full75_duration_max, + #MAX(IF(s.displaypath="Full", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full100_duration_max, + #MAX(IF(s.displaypath="Jammed", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS jammed_duration_max, + #MAX(IF(s.displaypath IN ("EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS faulted_duration_max + FROM ENABLES e + LEFT JOIN STATES s ON e.lane = s.lane AND e.starttime <= s.endtime AND e.endtime >= s.starttime + GROUP BY e.eventid +) +SELECT + DATE_FORMAT(MIN(firsttime), '%Y-%m-%d %T') AS firsttime, + DATE_FORMAT(MAX(lasttime), '%Y-%m-%d %T') AS lasttime, + lane, + CAST(SEC_TO_TIME(SUM(enabled_duration)) AS CHAR) AS enabled_duration, + CAST(SEC_TO_TIME(SUM(enabled_duration - full100_duration - jammed_duration - faulted_duration)) AS CHAR) AS available_duration, + CAST(SEC_TO_TIME(SUM(enabled_duration - full25_duration - full50_duration - full75_duration - full100_duration - jammed_duration - faulted_duration)) AS CHAR) AS empty_duration, + CAST(SEC_TO_TIME(SUM(full25_duration)) AS CHAR) AS full25_duration, + CAST(SEC_TO_TIME(SUM(full50_duration)) AS CHAR) AS full50_duration, + CAST(SEC_TO_TIME(SUM(full75_duration)) AS CHAR) AS full75_duration, + CAST(SEC_TO_TIME(SUM(full100_duration)) AS CHAR) AS full100_duration, + CAST(SEC_TO_TIME(SUM(jammed_duration)) AS CHAR) AS jammed_duration, + CAST(SEC_TO_TIME(SUM(faulted_duration)) AS CHAR) AS faulted_duration, + /* Inbound OEE (Loop's Efficiency) wants to have 25%/50%/75%/100% full all the time ==> 100% */ + /* (Full25 + Full50 + Full75 + Full100) / (Enabled - Jammed - Faulted) */ + SUM(full25_duration + full50_duration + full75_duration + full100_duration) / SUM(enabled_duration - jammed_duration - faulted_duration) AS inbound_oee, + /* Induct OEE (Operator's Efficiency) wants to have Empty or 25%/50%/75% full all the time ==> 100%, and is penalized for the time with active jams */ + /* (Empty + Full25 + Full50 + Full75) / (Enabled - Faulted) */ + SUM((enabled_duration - full100_duration - jammed_duration - faulted_duration)) / SUM(enabled_duration - faulted_duration) AS induct_oee +FROM COMBINED c +GROUP BY lane +ORDER BY lane; \ No newline at end of file diff --git a/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 b/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 new file mode 100644 index 00000000..a4b810c5 --- /dev/null +++ b/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 @@ -0,0 +1,61 @@ +import copy + +DEFAULT_BUTTON = { + "position": "absolute", + "top": "19px", + "left": "15px", + "bottom": "auto", + "right": "auto", + "zIndex": "auto", + "width": "auto", + "height": "auto", + "viewPath": "Templates/Buttons/NavButtonBanner", + "viewParams": { + #"label": "System", + "showIcons": True, + #"tagPath": "[default]SystemStatus", + #"view": "Windows/Graphics/Overview" + }, + "style": { + "classes": "" + } +} + +def genButtonsFromDataset(areas): + buttons = [] + + for i in range(areas.getRowCount()): + # Get values from row: + label = areas.getValueAt(i, "Label") + tagPath = areas.getValueAt(i, "TagPath") + view = areas.getValueAt(i, "View") + # Clone and customize button: + button = copy.deepcopy(DEFAULT_BUTTON) + button["left"] = str(15+140*i)+"px" + if label <> "": + button["viewParams"]["label"] = label + if tagPath <> "": + button["viewParams"]["tagPath"] = tagPath + else: + button["viewParams"]["showIcons"] = False + if view <> "": + button["viewParams"]["view"] = view + # Add button to list: + buttons.append(button) + + return buttons + +def genButtonsFromViews(areas=None): + if areas == None: + projectName = system.project.getProjectName() + path = os.path.join(os.getcwd(), "data", "projects", projectName, "com.inductiveautomation.perspective", "views", "Windows", "Graphics") + areas = [name for name in os.listdir(".") if os.path.isdir(name) and name.lower() not in ["overview", "templates"]] + + buttons = [] + + for i, area in enumerate(areas): + button = copy.deepcopy(DEFAULT_BUTTON) + button["left"] = str(15+145*i)+"px" + button["viewParams"]["tagPath"] = area + + return buttons \ No newline at end of file diff --git a/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 b/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 new file mode 100644 index 00000000..571f7e67 --- /dev/null +++ b/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 b/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 new file mode 100644 index 00000000..fcb4cbc7 --- /dev/null +++ b/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 b/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 new file mode 100644 index 00000000..298a52e8 --- /dev/null +++ b/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 @@ -0,0 +1,18 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph + /* Percents: */ +FROM LANES; \ No newline at end of file diff --git a/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe b/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe new file mode 100644 index 00000000..c934873d --- /dev/null +++ b/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe @@ -0,0 +1,323 @@ +{ + "custom": { + "forceModeRefresh": false, + "setDatesScript": null + }, + "params": { + "endDate": "2021-02-11 00:00:00", + "refreshDelay": 30, + "startDate": "2021-02-10 00:00:00" + }, + "propConfig": { + "custom.forceModeRefresh": { + "persistent": true + }, + "custom.setDatesScript": { + "binding": { + "config": { + "expression": "toBoolean(now({view.params.refreshDelay}*1000))\r\n\u0026\u0026{view.custom.forceModeRefresh}" + }, + "transforms": [ + { + "code": "\tnow \u003d system.date.now()\n\tcurrentDay \u003d system.date.getDate(system.date.getYear(now), system.date.getMonth(now), system.date.getDayOfMonth(now))\n\tpreviousDay \u003d system.date.addDays(currentDay, -1)\n\tnextDay \u003d system.date.addDays(currentDay, 1)\n\tstartDate \u003d self.getChild(\"root\").getChild(\"StartDateTime\")\n\tendDate \u003d self.getChild(\"root\").getChild(\"EndDateTime\")\n\tvalue \u003d self.getChild(\"root\").getChild(\"Mode\").props.value\n\t\n\t# Retrieve shifts table:\n\tshifts \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(now)\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Build SORTS list:\n\tSORTS \u003d [{ \"name\": shift[\"Name\"], \"start\": [shift[\"StartHour\"],shift[\"StartMinute\"]], \"actualEnd\": [shift[\"EndHour\"],shift[\"EndMinute\"]] } for shift in shifts]\n\tSORTS.sort(key\u003dlambda x: x[\"start\"])\n\t# Add end time based on next sort:\n\tfor i in range(len(SORTS) - 1):\n\t\tSORTS[i][\"end\"] \u003d SORTS[i+1][\"start\"]\n\tSORTS[-1][\"end\"] \u003d SORTS[0][\"start\"]\n\t\n\tstart \u003d startDate.props.value\n\tend \u003d endDate.props.value\n\t\n\tif value \u003d\u003d \"past30min\":\n\t\tstart \u003d system.date.addMinutes(now, -30)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"pastHour\":\n\t\tstart \u003d system.date.addHours(now, -1)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past2Hours\":\n\t\tstart \u003d system.date.addHours(now, -2)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past4Hours\":\n\t\tstart \u003d system.date.addHours(now, -4)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past8Hours\":\n\t\tstart \u003d system.date.addHours(now, -8)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"currentDay\":\n\t\tstart \u003d currentDay\n\t\tend \u003d system.date.addDays(currentDay, 1)\n\t\n\telif value \u003d\u003d \"previousDay\":\n\t\tstart \u003d previousDay\n\t\tend \u003d currentDay\n\t\t\n\telse:\n\t\t# Resolve sort:\n\t\tif value \u003d\u003d \"currentShift\":\n\t\t\tsort \u003d SORTS[-1] # Default to last sort (assumes last sort includes midnight)\n\t\t\tfor i, s in enumerate(SORTS[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telif value \u003d\u003d \"previousShift\":\n\t\t\tsort \u003d SORTS[-2] # Default to second to last sort (assumes last sort includes midnight)\n\t\t\tSORTS_REV \u003d SORTS[:]\n\t\t\tSORTS_REV.sort(key\u003dlambda x: x[\"end\"])\n\t\t\tfor i, s in enumerate(SORTS_REV[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"end\"][0], s[\"end\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telse:\n\t\t\tfor s in SORTS:\n\t\t\t\tif s[\"name\"] \u003d\u003d value:\n\t\t\t\t\t# Apply:\n\t\t\t\t\tstart \u003d system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)\n\t\t\t\t\tend \u003d system.date.setTime(currentDay, s[\"actualEnd\"][0], s[\"actualEnd\"][1], 0)\n\t\t\t\t\tbreak\n\n\t\t# Increase end if before start:\n\t\tif system.date.isAfter(start, end):\n\t\t\tend \u003d system.date.addDays(end, 1)\n\t\t# If current time is before startDate, then subtract one day to show last occurrence of that sort:\n\t\tif system.date.isBefore(now, start):\n\t\t\tstart \u003d system.date.addDays(start, -1)\n\t\t\tend \u003d system.date.addDays(end, -1)\n\t\t\t\n\t# Apply:\n\tif startDate.props.value !\u003d start or endDate.props.value !\u003d end or (system.date.isAfter(now, start) and system.date.isBefore(now, system.date.addMinutes(end, 1))):\n\t\tstartDate.props.value \u003d start\n\t\tendDate.props.value \u003d end\n\t\tself.session.custom.timewidget \u003d {\n\t\t\t\"startDate\": start,\n\t\t\t\"endDate\": end,\n\t\t\t\"mode\": value,\n\t\t\t\"update\": now\n\t\t}\n\t\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.endDate": { + "binding": { + "config": { + "path": "/root/EndDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + }, + "params.refreshDelay": { + "paramDirection": "input", + "persistent": true + }, + "params.startDate": { + "binding": { + "config": { + "path": "/root/StartDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 550 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "StartLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 180, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(self.props.value, timewidget.endDate)\n\tsystem.perspective.print(hours)\n\tnewVal \u003d {\n\t\t\"startDate\": self.props.value,\n\t\t\"endDate\": timewidget.endDate,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap endDate to within 7 days of startDate:\n\t\tnewVal[\"endDate\"] \u003d system.date.addDays(self.props.value, 7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 225, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.startDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2022-03-04 04:00:00", + "formattedValues": { + "date": "2021-02-10", + "datetime": "2021-02-10 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(timewidget.startDate, self.props.value)\n\tnewVal \u003d {\n\t\t\"startDate\": timewidget.startDate,\n\t\t\"endDate\": self.props.value,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap startDate to within 7 days of endDate:\n\t\tnewVal[\"startDate\"] \u003d system.date.addDays(self.props.value, -7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EndDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 410, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.endDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2022-03-05 04:00:00", + "formattedValues": { + "date": "2021-02-11", + "datetime": "2021-02-11 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "EndLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 365, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 45, + "x": 5, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Period:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.session.custom.timewidget.mode \u003d self.props.value\n\tself.view.custom.forceModeRefresh \u003d not self.view.custom.forceModeRefresh" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": 55, + "y": 10 + }, + "propConfig": { + "props.options": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\t# Add default relative options:\n\toptions \u003d [\n\t { \"value\": \"past30min\", \"label\": \"Past 30min\" },\n\t { \"value\": \"pastHour\", \"label\": \"Past Hour\" },\n\t { \"value\": \"past2Hours\", \"label\": \"Past 2 Hours\" },\n\t { \"value\": \"past4Hours\", \"label\": \"Past 4 Hours\" },\n\t { \"value\": \"past8Hours\", \"label\": \"Past 8 Hours\" },\n\t { \"value\": \"currentDay\", \"label\": \"Current Day\" },\n\t { \"value\": \"previousDay\", \"label\": \"Previous Day\" },\n\t { \"value\": \"currentShift\", \"label\": \"Current Shift\" },\n\t { \"value\": \"previousShift\", \"label\": \"Previous Shift\" }\n\t]\n\t# Add shifts:\n\tshifts \u003d utils.datasetToJSON(value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(system.date.now())\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Add shifts to options:\n\tfor shift in shifts:\n\t\tif shift[\"Enabled\"]:\n\t\t\toptions.append({ \"value\": shift[\"Name\"], \"label\": \"Shift: \" + shift[\"Name\"] })\n\t# Add custom:\n\toptions.append({ \"value\": \"custom\", \"label\": \"Custom\" })\n\t# Return options:\n\treturn options", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.value": { + "binding": { + "config": { + "struct": { + "mode": "{session.custom.timewidget.mode}", + "options": "{this.props.options}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.options !\u003d None:\n\t\tfor option in value.options:\n\t\t\tif option.value \u003d\u003d value.mode:\n\t\t\t\treturn value.mode\n\t# Value isn\u0027t in options, default to currentDay:\n\treturn \"currentDay\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "dropdownOptionStyle": { + "fontSize": "11px" + }, + "style": { + "fontSize": "10px" + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 b/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 new file mode 100644 index 00000000..81d3de91 --- /dev/null +++ b/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 @@ -0,0 +1,334 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value.split(\"/\")[-1])", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 60, + "width": 85, + "x": 205, + "y": 165 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": "{view.params.props.config.rotation}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.props.config.rotation" + }, + "transforms": [ + { + "expression": "\"scale(2) rotate(\" + {value} + \"deg)\"", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "path": "Templates/Areas/SpiralChute", + "style": { + "transform": "scale(2) rotate(0deg)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e b/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e new file mode 100644 index 00000000..dd82e720 --- /dev/null +++ b/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e @@ -0,0 +1,1037 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "params": {}, + "size": "medium" + }, + "propConfig": { + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.size": { + "paramDirection": "input" + } + }, + "props": { + "defaultSize": { + "height": 58 + } + }, + "root": { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Monitron" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/vibration", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Monitron/monitron_data" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Oil" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/opacity", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Oil/oil_condition_monitoring" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Image" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "height": 30, + "mode": "fill" + }, + "source": "/system/images/Builtin/amazon_rme_logo.png" + }, + "type": "ia.display.image" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer Start" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "id": "Docked-West", + "type": "toggle" + }, + "scope": "C", + "type": "dock" + } + } + }, + "meta": { + "name": "Menu Dock" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "color": "#FFFFFF", + "path": "material/menu", + "style": { + "classes": "Header/Icon", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Back", + "tooltip": { + "enabled": true, + "text": "Go back to DEX" + } + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "props": { + "color": "#FFFFFF", + "path": "material/arrow_back", + "style": { + "classes": "Header/Icon", + "cursor": "pointer", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "550px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "300px", + "shrink": 0 + }, + "propConfig": { + "custom.area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"Area\"),\"\"))" + }, + "type": "expr" + } + }, + "custom.lookup_path": { + "binding": { + "config": { + "expression": "try(if({this.custom.path}[1,0]\u003d\"DetailedView\", {this.custom.path}[2,0],\r\n\"\"), \"\")\r\n" + }, + "type": "expr" + } + }, + "custom.path": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "expression": "split({value},\"/\")", + "type": "expression" + } + ], + "type": "property" + } + }, + "custom.path_to_display": { + "binding": { + "config": { + "expression": "if(len({this.custom.lookup_path})\u003c1, \"\",\r\nif(len({this.custom.area}) \u003c1, {this.custom.lookup_path},\r\nif(len({this.custom.sub_area}) \u003e 0, concat({this.custom.lookup_path} + \" / \" + {this.custom.area} + \" / \" + {this.custom.sub_area}),\r\nconcat({this.custom.lookup_path} + \" / \" + {this.custom.area}))))" + }, + "type": "expr" + } + }, + "custom.plc_dict": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "expression": "jsonGet({value},{this.custom.lookup_path})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.sub_area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"SubArea\"), \"\"))" + }, + "type": "expr" + } + }, + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "this.custom.path_to_display" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Area" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Icon_1", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "Database Connection Status: LOST", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Database Connection Status: GOOD" + }, + { + "input": false, + "output": "Database Connection Status: LOST" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.color": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "#FF0000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#47FF47" + }, + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": " db_tag_path \u003d \"[System]Gateway/Database/MariaDB/Available\"\n\t\n if not (system.tag.readBlocking([db_tag_path])[0].value):\n \tsystem.perspective.openPopup(\"errorPopup\",\u0027PopUp-Views/DatabaseError\u0027, title\u003d\"Database Error\")\n\t" + }, + "persistent": true + } + }, + "props": { + "color": "#47FF47", + "path": "material/table_chart" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_3" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "buttonid": "HeaderLegendIcon" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "draggable": false, + "id": "TZyBcXB7", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewPath": "PopUp-Views/Legend_Popup/Legend-popup-view", + "viewportBound": true + }, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "delay": 250, + "enabled": true, + "sustain": 1000, + "text": "Legend" + } + }, + "position": { + "basis": "35px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/legend_toggle", + "style": { + "classes": "", + "marginRight": 20 + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.navigate(page \u003d \"/Real-Time\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "../Label.props.text" + }, + "transforms": [ + { + "code": "\t\n\treturn \"red\" if value \u003e 0 else \"#fff\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/notifications_active", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority", + "returnFormat": "json" + }, + "transforms": [ + { + "code": "\ttotal \u003d sum(row[\"Count\"] for row in value if \"Count\" in row and row[\"Count\"] is not None)\n\treturn total", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{./Label.props.text} + \" active alarms in the system\"" + }, + "type": "expr" + } + } + }, + "props": { + "justify": "flex-end", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_2" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "covert": true + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tdevice_list \u003d tags.tag_utilities.get_devices(self.session.custom.fc)\n\ttags.tag_utilities.reset_disconnect_tags(self.session.custom.fc, device_list)\n\tAWS.wbsckt_abort.close_websckt()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon_2", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "custom.heartbeat_received": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_heartbeat_interval" + }, + "transforms": [ + { + "expression": "if(secondsBetween(todate({value}),todate(now())) \u003e 70, False, True)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.wbsckt_running": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_running" + }, + "transforms": [ + { + "expression": "if({value} \u003d True \u0026\u0026 ({this.custom.heartbeat_received} \u003d True) , True, False)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "websocket running" + }, + { + "input": false, + "output": "websocket disconnected" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.color": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF4747" + }, + { + "input": true, + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/location_city", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "expression": "len({this.props.text}) * 11 + \"px\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "Configuration/FC" + }, + "type": "tag" + } + } + }, + "props": { + "icon": "material/building", + "style": { + "borderWidth": "0.25px", + "color": "#FFFFFF", + "textAlign": "", + "textIndent": 10 + }, + "textStyle": { + "lineBreak": "auto" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "User" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/person", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "hasDelegate": true, + "name": "Sign In" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"small\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "session.props.auth.user.userName" + }, + "transforms": [ + { + "code": "\tif len(value) \u003d\u003d 0 or value \u003d\u003d \"null\":\n\t return \"Sign In\"\n\telse:\n\t return value.split(\"@\")[0]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer", + "marginLeft": "4px" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_0" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeSession()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Exit", + "tooltip": { + "enabled": true, + "location": "bottom-left", + "style": { + "fontFamily": "Arial", + "fontSize": 12 + }, + "tail": false, + "text": "Exit Application" + } + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/exit_to_app", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_1" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "justify": "flex-end", + "style": { + "background": "rgb(43,43,43)" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b b/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b new file mode 100644 index 00000000..530579f4 --- /dev/null +++ b/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b @@ -0,0 +1,1323 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 286, + "width": 928 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PRS01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 210, + "x": 904, + "y": 286 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 140, + "x": 885, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 280, + "x": 746, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 360, + "x": 746, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 330, + "x": 387, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 123, + "x": 58, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 884, + "y": 77 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 887, + "y": 216.333 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 843, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 703, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 223, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 172 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 123 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 765, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 765, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS02_02_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 154, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 123 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 253 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 83 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 803, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 822, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 803, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 822, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 114, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 888, + "y": 195 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 803, + "y": 79 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 803 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS02_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 97, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS02_02_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 128, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 866, + "y": 98 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 866, + "y": 83 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 20 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 97, + "y": 80 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 97, + "y": 65 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 182 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 112 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 894, + "y": 144 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 894, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 757, + "y": 27 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 860, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 874, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 744, + "y": 27 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 388, + "y": 127 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 80, + "y": 127 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f b/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f new file mode 100644 index 00000000..1d562681 --- /dev/null +++ b/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f @@ -0,0 +1,244 @@ +{ + "custom": {}, + "params": { + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 750, + "width": 1450 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Graphics" + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "path": "view.params.view" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.session.custom.currentGraphic \u003d currentValue\n\tself.getSibling(\"DexZoombox\").props.zoombox.current \u003d 1" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + }, + "useDefaultViewHeight": true, + "useDefaultViewWidth": true + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "DexZoombox" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.zoombox.max": { + "binding": { + "config": { + "expression": "coalesce({../Graphics.props.params.maxZoom}, 4)" + }, + "type": "expr" + } + } + }, + "props": { + "view": { + "height": "750px", + "width": "1450px" + }, + "zoombox": {} + }, + "type": "dex.controller.zoombox" + } + ], + "meta": { + "name": "Window" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "meta": { + "name": "mhs" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 110px)", + "y": 10 + }, + "props": { + "fit": { + "mode": "contain" + }, + "source": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH8AAAAgCAYAAAFMYpenAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAABrWSURBVGhD7ZsJlFXFmccfqCGJxi0qCri3oC1bv3vr3vd6AQURccEkShITt+hIkhONW6ImMeI2GhUVxyUxSmJiNBM0GhFRQZNJNHHfFxRBoIFe3tIrTXdD93vz+1fXfbxuuoE4MzmZc/KdU6fqVn31VX1LffVV3XtjEWRKSnZWXh+PH2wr/h5YZ8J8PhYb3GqSWT1n/YDHWGzq1Kk2P+qoo6YnEonPkDfpedKkSaWTJ0/++Mgjjzw6NmvWrMENFRX7RZ06w2S+3vd/ozJI80B+BcRTHIH80UcfnRcBylMpbxBerIHO9YlEhfLWeHhxR5CwxCAwf+LEiZ9W2RFoVFkESFfT/qKeC9BQWrGfK247NJtwVSqe+LcNTL06kdg964W3przk5VC/fObMmTsIR9OGjVEqiw1Gv4I0dsqUKafG1LHW90+A0Mvrg6QVpuQgAiC/A1J+2rRploAIiYAjlIO9veE//GODF/y22Q/mZX2zoBGN1AZjDwThR0IURARUFgHSKXSuhPhTFkGw3oQfdTBy1kv8PpVMluUS5fl1CFMzbCc1ecFjDjVGx7MnTJhwmHssAPVzIbw9A+wHB8+5ainjNdoOdOWHMI9GuFlzxBFHTLQIGiQVDy7IhuG0tG9WSIvzZszYrskPrtBEhNPoByvhsktlJ56NEO3QM4Pueswxx+R5zkvb4haclsrKyt2UxLU0T/1pwikMHEEXg9R55s5MvDLMxP17qBrUaII5rUxkje9b0TGprhYT1qisCZDmqyyCUVmijibAoNbkBNEE3KMF6s4lvekeZcv+I20M2E5Sji4fVH0uWSEVNNeODawIBQx6MoP8wD0WgPpHZ8yY8amqqqp9mJTtL2CgO5HSiOOPP/6zlBczmVraf++aN8G7paW7u2Is73k7yC9kDjlkuKv6vwMtg66wPJ9PVlp9o+v3ZYAbsQ3Ebg1xjTGft8gABvS+K/YCuHtaOdy9QtkuamxjT8pvqCw1IKWVMkLKf1VdbMW4cQdosCY/XL3q8PjBGNvjrMl8nTHfUnu6rHwYzq5Lk7EdAK3HYhELGKSLurdUZpBOjG+kyhK97ERlGSqqO4Xn0UzgP1QXazWJJ9pxACq3xMMftzAZGWLKmJE4yFryO+tLzd6tWt/x4EjhaQIiyoAn6pnBXyJtKJ4AdhDHIHdnAodGE3CO5GEZqp4tNPjm/ZRn1qq8nsHXw2ldZeVBKd8/P4NzTXmBNRYZZioIzlZZ1i5DcxzNYYAuCE+Gq7fVTrldg0aJZzsBD7tiks8ee+yxWhULVBdrDcJ5snyVm0xYny0zSZXlDpv9cE2T7x9UF098TWqJNitNAGvfDu5OU5mJDIHgF6IJMGgnZWu88hGahMrFoMmTDYrlhg7dsRMDbArC3Joy/wT2opMkbum83kzcm0n9Qe5VNtLTddMEVEYS+yrXBLZmA+Tv44SmIrXpkoLqLKweE4zoDJJtkoRSR5Bc1zJ+/J71ZeYYJJRjVfzOoVqA0DNkg3ueegCiBzMJa1iI/JHy8vJhKmvtMzErbuovA+djnpeRjlDdZrDW8/ZrCsMfrTOJ51iC7RkvsLuzIBWv2qc5CK5p9ILlUtEGPKgkpVXUEoQvZ73gm/T/rEPvBTI8Bh/qHrcKmjjS28M92siBSX8eQ95dZVcdwWDVqz3STATQ2F5aom2kEs8HkHZyzZugzgtOxM7WW5eAyjF6Sb4lG/evllDWh4nlzkPncQs5FsiyBhMshOlnMI/aNgTRQFs3QqF+EU71U460BQa/UmpHe8+RdnTV/QLa/J5w6bOEhWMFyqQPdat4vcoW0QHPI9SmGIy+h6sOgQ+n/wrZuuopd6gv5dxxxx0nvB/bzoImr+JyTVzMtQVhdSoej7umWNokvq4oQW1YxIZsEMxwTbEVE8ftmg6CS7Jx82U9Zzxzo3AlQEx3CYIraJAJXK5Jktu4jskUwpUIWDdy1GtJkZt7K3JZTHgUdZ30ayIdYjs4kLlTZ/tgZXbP1XLQWoXGQovUBwqWwkoc1OSbN2XSaK4JjzNG9Q1BcFq+osoyrqCA/INMSbBzC0zB3FN5BCafLavIemaupQVRopmHVKfdKxMEp6teIAG4CT1FWqQyE05FYRV1v1cdjKSZ/I1Oa28XC4C2dlIOAa4ifUhaphw6KyQApUgAWMX2lO8WHWkcnG7an4bmiX2XSYzI52UJgPCrfY2fLFddelz5kWJc65xIqJHA88mGeFC1ivCKJbCk2WjdJ/IE4mvSnv9I9YjEZ+pLJ+6Ez3hDy0hLiBDvODsAwMCRAGzkBONJJtQgrSnJKpjwTWoj/4JwyfsKoJP+baTTeaZ50hS86mTqvyzmlajrFXVFIFz6PcJY7aLNeHe6JkwXTSkGdWbeyfNZS0tKhjSxkzqU2CwcTcqUn9Pih12EC1bzOgu45lhd3HwR02+S+YtW1vN/Ketyzb0EUKwBJn0Dk1qijdVVDSgA8OwSiLaYCOQDxLwEGQmAuj0YqxA/RQDjh8ovgL+Ex03OdNUY/yA23vfk1eXMtB2hyW7ydiwhp1OBGFeAjpBe01JIe+ERG3kWrhhXXE3b2rp4POHIFoABrznhhBM08NObmWAfQKsnOdxlkRMUY5o4TG4UExbRgby82iQ0LMsuYQQ2Xc9ypuB3kTrkAJ322xFOwTo3g1QiMRFmrycsupegYG6HSd6L87u23ktUOBQLRKgjWQKz074/c228quA4/9kA4Q2VlSC8vVzV1iHvxXZQCI4Z26NtMbSM9PZo5ICi0Kxx7NgDc6NGfc41/f+FPF4za8wxLWH4AM5wBXt7ppYjomuOZYP4cW0msQCNd8nU5TS1XLImbGwLy+euMsbuv/3AIKS/twJh97xVcIH2EPeoyG9H1v2eCo5cVQHkI9TGGJsFN/IBLIWDMf1RtJdoHlT3DqKWe94uBDP3cRLYIMZ0NGEvb6tzQTkM/wSn1qm1zvpWm2VcJwc9dxNHrw/CVDpuvm4JFoHBghj8edbyDa5qi8D6NazPD5m4PeYIMN+rqXuHugt5LDhVAQxdCH21zXZVdn/n+Tz6vUG/FO1N5Gnm8AHCuFXCtIjy8mx/88WYi/zyzUG4AS//Wm0YHoBmr1JwpDbdflHfTPT3PLHCE5zTXoP5Lp1QJASEtl6RpCXsgAGHMdhKBs/h1M5w1f1CRUXFfuB/yGQxxImFnQVGfuuittt57MU8bberDUafdFUS1qUaT3QYW0e0VlKXO361aE4WMeUHsxTI6Lynk0/GNw/We2FlfWnpTnWeN6XFBN09OwHBjB8uqPF9Yzs6SMWTx2vHcPt9vtUPP24ZX7mna7bMk5YxCXncJgTQy3lGIA8P3kJNmLwbRr/hmuTF75fHpu8tPPZlfo7awIluZnYkrRUdGP05tBLkugAMRJP8F+wqQ2PZw/19mXSd3au1fv3gNkVvIlI7dMqOxAEviym1IYDF+aKDTUMQryLKkyZitabicM4JnFXZFpPl+AHzbYsERMyTbHBD/hFps0tHJnWLti6YGZB5cG7msRfztN1azDwWsyv9FeOL1mYnPC2JfD4/KIYWp3UGiQ5pDAEskbaXH8X6N+a6dDy4WYxLMK0myGbGjy8lGNo5ZczxOMMFtOVk6qvGjNlNRNN+cLV8QJusxwv+bEcCmEiBeSbT5TS7mEnaK1oB9TPRVk44MCgz7Zd58jtwbrvh5HZXUhn8u4qZh7lPQe9FF9isoXwROJufODH1szD1bhvMxIPbVLdi4v6fhqkaeXMYUtDTlfXCi9TG2j4TYVinKKEoQqxJJvdXWyaRCPAD9gic9sxq7R6qZwIR8zkmeDsTWaeJqax2aQfGW52mfgveW7IQ2gvMU3+/6sCT44pifRvvg99MfYF5AeVy6lZIKO6kuZJxr4POpkixPm6+rUhOGiNctUdAXbsy+VelVTFPnkt5wYV5ztmtY5N7NXnBO83OImzIW9UT5FSP9UfLN4h5DkCrczhS1UfMuwmWk85zjHa7Cb2tSYLzN4SyM3UvitH+mAfHLh3RUorqHO0C8wLoDCddQ3ud6DtLSEGrx+nWlfmnYqZdbr27i438oLQXLJaHt57fhMub4okr8t7MHRpM8rsdOD4OPtJ6W7MJVulWRr1YDueIcR2QEJq9exIwYIF5HNZU1TGBX2oymrwTRC3LoMRtUdqeNmNe+OQPgXcUTE1Rgp4u2h52ltSL+QjA3wOcS5jDcie4Np7HsuYTEzHvDmkRRhqqyxIl6pA2wcPtQfh6Km7OqQtDu17q4+UHYwWN2tYkrJTvX5/1/X3rRodD6yeW2hOedgtd3jYYU9jTi5lnIlZQAb6DCfxNjDOhdZFQYGJIf8xTjrz99a6qAODfULzmBwLa9wf3LY3J2GfGcqPKP0cs/5bMXlpr9MO/YMb76HRXfFNTfUhiONp+QczJGgh6lry6zz7W8+ttD23z1L9nvw/aOQAVDiH9MS+grJsbrcVLXNW2ML/VrQ4YxHj7yfG55wKA8wcxTz7TVjQQlKDJbmlfDLQE4bJ63//eWs7zsoyMCX+kvdstAR1fO9LGTG6Jl1dlPHMHzH6kE57We4/Ww03XR8BAzAuYxMGlRUIW8wjjdTFvteOA8q8dg5ttdRHz4Nh3UmKa/gsZ83HwTydirFKi/Rpw17lltmkeqXjwQ53JxZzWrF69YQ2dMNUhq5DGdZmhckOQOFd9OPnNz5dXWoGpj3YHrOiuFUVbmACGRzBgtZvgCa66X5AgwFkqD00/+6pBQN3DOu7CzE957MU8bXeqjVw3vxpve5h7dvr06dafIIhO8k75Bc0BJTwRHZkLUF/mfwPmV7cbzvEw05N64nfybphclvXDrwpXlxYccp7Il1fkNyAghPORbnctoT5A6KmXbT8jzWfy41z1gADepUxQWpvkqsTQBdQ9SZ2WQi/m0eo04YNTePVFXRJh3IcQ3iRf69IrPF/Z3+HIgu7Z0344k2jt5+wC9643ibnE/XfXBsHZes/i0CzzLdRxnr9WQU/xJeY/E6BtOdbhCHSYTn+uettB+362qmrf+spEBRHeyZm4fwHx/w0EPv+eLvNPaygrs0FOX5DDrC4rK2FXmEaf8xs8c2urSd6LJf0C/2GTLZvgFwRHdxNbXFVnzNdrCZaqSzddp/0L/sGg6NRGrAR+hACLObjV4tPWsTFssJ8iJCt0wm1nl3soOvZHkBprRmbLwotYPYtYOXX0a9dmIffR40J63Mkm19JT30YduBs7g2QLxvBByjN3p8b70xo8bxdHeougzYLlPx4rvwBrv5gU72/H+6Qwa9as7aEP2UlyS2fjP3vdqwrKy8s/h2uaQJoJ3rm4mTPIA61Ah9IvyBXpKgP8s5i/+um4M4nygLyrjd0/1FjgX0u6i7q5pF8y5lyef0q6ifR90knUlQ4dOnTg90krxo3blZ3+SxljFuDHW3Ps3orpFAlEEb1eVeglPEawTp+WrA6CcXKDzaZyJK5wNsqs1l2Pko4/0eW3gmMpmb2jC5x2yjKKDevMJiPQyUHf+wi/m/7UdXKOfLbOD0+tLvryoD+A6WEweSWCrnGvMJbC8MXsBQV3/QlBodMh0J4t2tqMeV4hoUO77+Z+KGP+pzZaFCq8TvBuVz3NvfaqYqB9BPTviPoxjjbwp+jb94JwMEYyBrrXkd6FR4srftVPeZT0HNW5YKOapL2z95WuXDT7lyHOvY/V2qyQTQqQInTMk2Ka/GA9Yd1rKPTBVJm5kS3gbHmHtRXefo3GnImS35VhKOohDrbGYs/MnIUJJF6n7uf1XuK8Gs87dm0iUbEmmSyvKTMTODrOYAu5sskkFuJl6toCd0TU2OTyMhhKK97nHmLqQNuQm3YvQBjDENaPyZdJiC7S0aufhTA97ZPsedDahb5nQuNVaHW7aCnH81uMdVbfqIm6UaTfgLNBuOA1szpvdW9ftqh8xrmN8aKITJHd49QVXk2Bsz20TgRnsdqL5lJL/ifyX4N/F/kc0h2U76Necf1LzF1fsmSov4qy/QjBghSvz2qyJvgvBL9RK10rVmHv+iDsRgmrMn5wcyYeJHTx6bpZ0Pv9lAlv0pW3DESGon4yHJTVqm0BxR6bxh26Lr1A7/7TZWXDmiord3u3dAYGWD4qE09qq3kfz6MI03qOddYgwhynyIXNGE0+trkBSPkwp0++dOFhz/xKMgJy3eLegsD0lmdAJRTBduBXQu9BBNgS0ZPQybupl/K/0degnPLvB69TygFX95e3bIvyoTlHYxQpf34f5e9K3a3grROO+KL8NHXH0tbLAzkYpOuCESNG6Jr/IHjwoHvgySefvGnOek/R6ifv6wjK19vX+c7tktpw6w9nE5UVeoeZnxHbDiUOy5SVHbZiXHhAvVdZgVH8rjUIW7TaWbl6fc/K1wnYLENR5xZ/hyUjWzk2OHBt3EzF2L7fGgTzWNFLm0zQiNe5Je1eBM2aFRust2hpL3hScYU1JAxKXgWDyIJ7T7Xvj7ZEiwDB9at8lZ0XkLAU7muP3Oz9ZgSig0AvI/8o6itl0OcTKR8FXodytrj1uFjhJ5rvFpS/E+NeC05Grt4p/yPSbPCOpF63830/ctkyEI1/BXf+V442G6VErXzc7Qbc9vzqskThJPziMSU7NycSp4P3ZleYXI3ia4jQN8q963QvF92KAbDin03FzfH6IjBPDEEc8IUWP7gNb/IC+/tqFN62HgNRTKD3wTIYYoyftSaThb0I9/4ZbQdpP9DXRHYbUFLcgFF9mImbLzrUAoh5BGGV71a79rmPSUupb5MiJTTyJoT7IMKd4LpakAKo/yK4z4Cj972RgOug8TZ5SjTAyemZ/v0qH7z7Gdv2p6yPyp6nfjYe4BKXfliUorrrwPur5hzNva/ygUHQ09dIN1BvDcDxo9TCvPR51hOkq0gnRt+YDQi6pq3zzLcaffMeSshpdSkoY9XVpuL+rMYwPMChxl7V551+eBJKXyIPEe3LKZIMpo2TQHMQPlnneSfqtKA+uu1oM8bHQG7Co6xUH61iaNitRWPJeOrj/gM1eBQ7kINMWXhY2phf6Y5ceOor48Tg1ugGlTF6uToEVlC+W3VaoQ8gxC+RK+r+M0LaWLxqaLucAOoQVtVonuVSs2pTf3DXQeNhcKbTV0bxfCRsyltTfrvwtIIjesXBWN/kxrNKVx/l0OqrfAs6wVAfkPRd+nPgas8v3OAU0cqQ/gLO9eSTtW3QvdfWM6gubs4hmHubVdkt4SpIQ8BZjOLG6EtmwazYrMHs+0fT9hcUZt/iSIFSit4B5ujH3p8iaPxV1iSO0epVv0zZhMOIJ+5k9dfpmKg+0b1/LlFh++Ip/ihXz6nBGo28Rg3P9V7weBN4cv3RFRqGszIdN18Dt9e+D4O9lC8h8vwYQrQrnHx/2m4k1UohzgD0WdsKcr3x6ZDQJETq9Pb4ImhYb4Sgp5FejwRLeYvKFy3Rh85GcOV9niX9gfpHyB+Lkp6V6LeI54/BLxgBdf0qvw8MBk8fb04j1xfmjzJnvezZqLnqZOJkIT6fpf0k8k3Hx7oyfzqu+pkOXL2Eq1VG6kLBL9SU+adK6Q41tnZMUIVXWIjiuuSyWc3dxAUftpjEr3Hd35XCOAWMUCAnr5Ii2MMYnmpn7xZtKV7bg1Z72gQv6dVfgzGX4ca/ywligvppnEZiCjzKT1sIJDUfGZr1En7QnvHNgr53CwKY6k/5+qNDW5e1eN2d4mL1Ce1C2jslaOEpOWU10+de+ujTI8u3W2n6PPeNbVE+SXu+jfahpz3/RvqUYFRDREt5lPSsxNj68n42+JGytlX5vUA09WqTvh60LoXm86Q2N+8cdBfzfLxDj8W0uuWWEW6jU6hVkFZbgxe+k/HD81eV9XwKnC4vG5Y15lso+kbc+zezY/3RuZJNH5dEoO/eWZ0XQ/cdeRJdjOv4JwNgBW/A2H63Nh6vcugF0Jd/ihcY81H6tkUnD/XXtyEYwytNxnx5adDz91ExwOyAykfAvbxEGIb6jOlCcD8QrpIEhdBOoa7XxYoE+gmU/78e7TvYlpNKAaCpGOFReIiM+wNo6oVBDx1d0NTF42Nwp/cQzDXYb1SkeLfaMIS2RhM8zz57OSuzcqAbN6342iCYBJ1ZGNBLKKxdN3n2zE8SXb0w1BcPNezn6rNs7Ni9aoKgtJ7tpN7DA/jmWSL8hijCV0whA9AxstGYl+rj8TNyHF3sgH0AxrZZ+QLq9btRApwryb+HUMa6pl7wz6J8zZf4pAo8fZBwMe3Hkvanvr9jnl5u6GJKHy7Z1+QoXyv/NfqcRnPvuTQfaj5f5wUXNrHa29j/N6A4uWe9sravuVAC7rcdhazEXb9EvgjFPklAtojyK3pv34pblsFopWrFqr8LIvX30wv1cXOG/TqsouJwto451C8Hr5O2jdZDWCW720Se3RdiNcQad9X4SSNDddPdDBDcMBi9gvxj7XVSEswvQAjT+lP+tkJJSckQaHxJQhRdrSDovotSz+6rfBShG74HGHujuwlsRdhzOEkodhpw7u6/gtul9Gju0FlA38INnz73o+6rtNnAk6SvXdL0e5tcgd0i0lOUF5H0M89qUrdoOeVneb4ZQxx4K6kuTZSwr19CgPY3lNPWlUjal7RSqlajAjUpKrrClXIjxbH3g5e0LlpfuNDWRN2fMJbv6JW/GyKmO/v2MLGgO1mR0ztR0RYdeQf1Jf5oIXh8IxUPrtctIkrf6vkVxuzKh8klMKtPhPR1+yOkqf8T5asvita3Es+hmHaELrr2hm+glY/A28DVt9UN9LuFeW1x5aP0vcC7gn719FPg2cHzY8WKcj+tjKFeV7sfwF8jqUuGIOXKaKLklC0j0hFXf+nod9gZGOe2vX18tzSxu/0t1oSXrfOT81r98D1WZZsU5RRr9/CNUjRJrprtAaUl3mJvfqDZDy7QraBWuiNpQatXXwKw7z+KIXW0BGErK/09vM0itoW78Sbf0Y9bf+9rUq0Mjk3DYdaDUV16VCKAUQhniy9VtgWgMUS0oRvI9SLE8U6QvRQqL0F9CcZSQU5mX7wM6JqLYDDz3UXGo77OvY/sa1wC1elDXmiOBm8KfU6nz/nM7VLqfqCcuvOo+wo0E8hD37FvFpf93aBvW7SC2dsPVKrz/YP0R10j5bZDEsMbx43TWXKroKOcjOL18eP3XOp+Hf8X/CMhFvtvEdz4lYWIqWMAAAAASUVORK5CYII\u003d", + "style": { + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.image" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 285, + "x": 60, + "y": 10 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": ".../Window/Graphics.props.path" + }, + "transforms": [ + { + "code": "\tpathParts \u003d value.split(\"/\")\n\tif len(pathParts) \u003e 0:\n\t\treturn pathParts[-1].replace(\"_\", \" \")\n\telse:\n\t\treturn \"Unknown\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tzoomBox \u003d self.parent.parent.getChild(\"Window\").getChild(\"DexZoombox\")\n\t# Set new angle:\n\tnewAngle \u003d (zoomBox.props.zoombox.rotate + 90) % 360\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tsystem.perspective.print(zoomBox.props.zoombox.rotate)\n\tsystem.perspective.print(newAngle)\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tzoomBox.props.zoombox.rotate \u003d newAngle" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Rotate" + }, + "position": { + "height": 25, + "width": 25, + "x": 32, + "y": 8 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "pointer-events": "all" + }, + "text": "↻", + "textStyle": { + "font-size": 20, + "position": "relative", + "top": "-1px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "HUD" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "overflow": "visible", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "status": { + "tooltip": "\u003cu\u003eZoom:\u003c/u\u003e\u003cbr\u003eCtrl+MouseWheel\u003cbr\u003eCtrl++/Ctrl+-\u003cbr\u003e2-finger Pinch\u003cbr\u003e\u003cbr\u003e\u003cu\u003ePan:\u003c/u\u003e\u003cbr\u003eMiddleMouse\u003cbr\u003e2-finger Pan" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd b/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd new file mode 100644 index 00000000..5e451534 --- /dev/null +++ b/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd @@ -0,0 +1,2923 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows" + }, + "props": { + "defaultSize": { + "height": 600, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Commissioning" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttable \u003d self.getSibling(\"ScannerHistory\")\n\tlines \u003d self.getSibling(\"LineChart\")\n\t# Force CSV download:\n\tutils.downloadCSV(table, \"Commissioning Scanner History\")\n\tutils.downloadCSV(lines.props.series[0].data, \"Commissioning Chart Data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "persistent": true + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ScannerHistory" + }, + "position": { + "height": "calc((100% - 40px) / 2)", + "width": "100%", + "y": "calc((100% - 40px) / 2 + 40px)" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "induct_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "confirm_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Confirm Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trackid", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Parcel ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "imgid", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Img ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "barcode", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Label" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trays", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Trays (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "assignments", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Assignment" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "divert_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Divert Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "requested_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Req Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "diverted_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Actual Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "sort_code", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sort Code" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Apply styles:\n\tfor row in filteredData:\n\t\t# Handle sort code:\n\t\tif row[\"sort_code\"] !\u003d \"Success\":\n\t\t\trow[\"sort_code\"] \u003d RED(row[\"sort_code\"])\n\t\t# Handle barcode:\n\t\tif row[\"scanner_status\"] !\u003d \"Good Read\":\n\t\t\trow[\"scanner_status\"] \u003d RED(row[\"scanner_status\"])\n\t\t\trow[\"barcode\"] \u003d RED(row[\"barcode\"])\n\t\t# Handle destinations:\n\t\tif len(row[\"assignments\"]) \u003e 0:\n\t\t\tDESTS \u003d row[\"assignments\"].split(\",\")\n\t\t\tif row[\"requested_dest\"] not in DESTS:\n\t\t\t\trow[\"requested_dest\"] \u003d RED(row[\"requested_dest\"])\n\t\t\telif row[\"requested_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"requested_dest\"] \u003d YELLOW(row[\"requested_dest\"])\n\t\t\tif row[\"diverted_dest\"] not in DESTS:\n\t\t\t\trow[\"diverted_dest\"] \u003d RED(row[\"diverted_dest\"])\n\t\t\telif row[\"diverted_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"diverted_dest\"] \u003d YELLOW(row[\"diverted_dest\"])\n\t\telse:\n\t\t\trow[\"assignments\"] \u003d RED(row[\"assignments\"])\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "custom": { + "plot1": [ + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Rate (PPH)", + "visible": true + }, + "max": "", + "min": 0, + "name": "Rate", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + }, + { + "alignment": "right", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [ + { + "axis": "Rate", + "line": { + "color": "", + "dashArray": 0, + "label": { + "font": { + "color": "", + "size": 10 + }, + "position": "right", + "style": { + "classes": "" + }, + "text": "" + }, + "opacity": 0.5, + "style": { + "classes": "" + }, + "width": 1 + }, + "type": "line", + "visible": true + } + ], + "trends": [ + { + "axis": "Rate", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "#000000", + "key": "total_pph", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + }, + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_read_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_code_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "multi_label_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + }, + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "gap_err_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "div_fail_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "dest_none_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "lost_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ], + "plot3": [ + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Rate (PPH)", + "visible": true + }, + "max": "", + "min": 0, + "name": "Rate", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [ + { + "axis": "Rate", + "line": { + "color": "", + "dashArray": 0, + "label": { + "font": { + "color": "", + "size": 10 + }, + "position": "right", + "style": { + "classes": "" + }, + "text": "" + }, + "opacity": 0.5, + "style": { + "classes": "" + }, + "width": 1 + }, + "type": "line", + "visible": true + } + ], + "trends": [ + { + "axis": "Rate", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "#000000", + "key": "total_pph", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + }, + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [], + "trends": [ + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_read_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_code_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "multi_label_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + }, + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [], + "trends": [ + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "gap_err_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "div_fail_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "dest_none_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "lost_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ] + }, + "meta": { + "name": "LineChart" + }, + "position": { + "height": "calc((100% - 40px)/2)", + "width": "100%", + "y": "40px" + }, + "propConfig": { + "custom.plot1[0].markers[0].value": { + "binding": { + "config": { + "path": "../TargetRate.props.value" + }, + "type": "property" + } + }, + "custom.plot3[0].markers[0].value": { + "binding": { + "config": { + "path": "../TargetRate.props.value" + }, + "type": "property" + } + }, + "props.plots": { + "binding": { + "config": { + "expression": "if({../CheckboxSplitChart.props.selected},\r\n {this.custom.plot3},\r\n {this.custom.plot1}\r\n)" + }, + "type": "expr" + } + }, + "props.series[0].data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "movAvgMin": "if({../CheckboxMovAvg.props.selected},\r 4,\r 0\r )", + "sorter": "\"S01\"", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Commission/StatsChart" + }, + "type": "query" + } + } + }, + "props": { + "defaultStyles": { + "colorScheme": "Spectral", + "normal": { + "stroke": { + "width": 2 + } + } + }, + "legend": { + "position": "right", + "visible": true + }, + "series": [ + { + "name": "Data" + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "timeRange": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm:ss" + }, + "xTrace": { + "infoBox": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm", + "width": 200 + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tselected \u003d self.getSibling(\"Table\").props.selection.data\n\t\tidField \u003d tabData[\"idField\"]\n\t\tid \u003d selected[0][idField]\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif not tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Add breaks:\n\t\t\tbreaks \u003d []\n\t\t\tfor row in range(data.getRowCount()-1):\n\t\t\t\tcurTime \u003d system.date.parse(data.getValueAt(row, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tnextTime \u003d system.date.parse(data.getValueAt(row+1, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tminBetween \u003d system.date.minutesBetween(curTime, nextTime)\n\t\t\t\tif minBetween \u003e 1:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(curTime, 1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\t\tif minBetween \u003e 2:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(nextTime, -1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\tdata \u003d system.dataset.addRows(data, breaks)\n\t\t\tdata \u003d system.dataset.sort(data, \"time\", True)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\t\t\tself.props.plots[0].trends[0].columns \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.series[0].data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.timeseries" + }, + { + "meta": { + "name": "CheckboxMovAvg" + }, + "position": { + "height": 40, + "width": 130, + "x": "calc(100% - 260px)" + }, + "props": { + "selected": true, + "style": { + "color": "#FFF" + }, + "text": "Moving Avg", + "textPosition": "left" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "CheckboxSplitChart" + }, + "position": { + "height": 40, + "width": 130, + "x": "calc(100% - 400px)" + }, + "props": { + "style": { + "color": "#FFF" + }, + "text": "Split Chart", + "textPosition": "left" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "TargetRate" + }, + "position": { + "height": 32, + "width": 70, + "x": "calc(100% - 75px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"total_pph\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]MCP20_Custom/SO01_Target_Rate" + }, + "type": "tag" + } + } + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_RateTarget" + }, + "position": { + "height": 32, + "width": 100, + "x": "calc(100% - 180px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Rate Target:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TargetSorter" + }, + "position": { + "height": 32, + "width": 45, + "x": "calc(100% - 225px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"sorter\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "enabled": false, + "format": "0.##%", + "value": 0.01 + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_TargetSorter" + }, + "position": { + "height": 32, + "width": 110, + "x": "calc(100% - 340px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Sorter Target:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TargetScanner" + }, + "position": { + "height": 32, + "width": 45, + "x": "calc(100% - 385px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"scanner\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "enabled": false, + "format": "0.##%", + "value": 0.02 + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_TargetScanner" + }, + "position": { + "height": 32, + "width": 170, + "x": "calc(100% - 560px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Problem Solve Target:" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "custom.rateIndicator": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "movAvgMin": "4", + "sorter": "\"S01\"", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Commission/StatsConditions" + }, + "type": "query" + } + } + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b b/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b new file mode 100644 index 00000000..8586d48d --- /dev/null +++ b/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FFFF00B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 b/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 new file mode 100644 index 00000000..34081a4e --- /dev/null +++ b/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 @@ -0,0 +1,73 @@ +WITH LANES_SUCCESS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + destination_act AS lane, + COUNT(*) AS total + FROM package_history a + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, s04_act_dest +), LANES_FAIL_REQ AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + CONCAT(sorter, LPAD(s02_req_dest, 2, '0')) AS lane, + SUM(req_dest_reason=5) AS dest_full, + SUM(req_dest_reason=6) AS dest_fault, + SUM(req_dest_reason=12) AS dest_disabled + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND s04_act_dest != s02_req_dest + GROUP BY sorter, s02_req_dest +), LANES_FAIL_ALT AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + CONCAT(sorter, LPAD(s02_alt_dest, 2, '0')) AS lane, + SUM(alt_dest_reason=5) AS dest_full, + SUM(alt_dest_reason=6) AS dest_fault, + SUM(alt_dest_reason=12) AS dest_disabled + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND s04_act_dest != s02_alt_dest + GROUP BY sorter, s02_alt_dest +), LANES AS ( + SELECT + LEAST(s.start_timestamp, IFNULL(r.start_timestamp, s.start_timestamp), IFNULL(r.start_timestamp, a.start_timestamp)) AS start_timestamp, + GREATEST(s.end_timestamp, IFNULL(r.end_timestamp, s.end_timestamp), IFNULL(r.end_timestamp, a.end_timestamp)) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + s.sorter, + s.lane, + s.total, + IFNULL(r.dest_full, 0)+IFNULL(a.dest_full, 0) AS dest_full, + IFNULL(r.dest_fault, 0)+IFNULL(a.dest_fault, 0) AS dest_fault, + IFNULL(r.dest_disabled, 0)+IFNULL(a.dest_disabled, 0) AS dest_disabled + FROM LANES_SUCCESS s + LEFT JOIN LANES_FAIL_REQ r ON s.sorter=r.sorter AND s.lane=r.lane + LEFT JOIN LANES_FAIL_ALT a ON s.sorter=a.sorter AND s.lane=a.lane +) +SELECT + start_timestamp, + end_timestamp, + sorter, + lane, + /* Counts: */ + total AS total_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_disabled AS dest_disabled_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(dest_full*pph_multiplier) AS dest_full_pph, + ROUND(dest_fault*pph_multiplier) AS dest_fault_pph, + ROUND(dest_disabled*pph_multiplier) AS dest_disabled_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent +FROM LANES +ORDER BY sorter, lane; \ No newline at end of file diff --git a/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 b/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 new file mode 100644 index 00000000..06fca026 --- /dev/null +++ b/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 b/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 new file mode 100644 index 00000000..ee02c788 --- /dev/null +++ b/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 @@ -0,0 +1,275 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Idle" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Idle" + }, + { + "input": 1, + "output": "Actuated" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 30, + "width": 30 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EPC" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_epc" + }, + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "fill": { + "paint": "#FFFF00" + }, + "height": "20", + "name": "rect", + "type": "rect", + "width": "20", + "x": "0", + "y": "0" + }, + { + "d": "M 0,0 H 20 V 20 H 0 Z", + "fill": { + "paint": "transparent" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 20 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-EPC\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_epc" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 b/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 new file mode 100644 index 00000000..fa365a11 --- /dev/null +++ b/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 @@ -0,0 +1,64 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter shifts */ + {shifts} + /* Filter alarm types */ + AND displaypath IN ({alarms}) + /* Filter out active events */ + AND eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +) +/* Finally, merge metadata into hitlist */ +SELECT + /*e.firsttime, e.lasttime,*/ + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve instance count and total duration */ + e.count, + dtag.strvalue AS plctag, + ddevice.strvalue AS device, + displaypath AS description +FROM HITLIST e +/* Lookup Device */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +/* Lookup DeviceType */ +JOIN alarm_event_data dtype ON e.id = dtype.id AND dtype.propname = "DeviceType" +WHERE dclass.strvalue IN ("Error", "Warning") + AND ddevice.strvalue NOT IN ("Ignition") + AND SUBSTRING_INDEX(dtype.strvalue, "_", 1) IN ({devices}); \ No newline at end of file diff --git a/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce b/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce new file mode 100644 index 00000000..6621a917 --- /dev/null +++ b/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce @@ -0,0 +1,696 @@ +################################################################ +################################################################ +## DESC: For generating stats tables from csv tagpath tables +################################################################ +################################################################ +#from __future__ import with_statement +import codecs +import copy +import csv +import os +import re +import StringIO +import uuid +import zipfile +from contextlib import closing +from os import listdir, makedirs +from os.path import isfile, join +from org.python.core import PyNone +from sys import platform +from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED, ZIP_STORED +from com.inductiveautomation.ignition.common.model import ApplicationScope + +############# +### Constants +############# +CP = "D:\\Ignition\\Reports\\Config" +DP = "D:\\Ignition\\Reports\\Data" +TP = "D:\\Ignition\\Reports\\Temp" +if not os.path.exists("D:\\"): + # Not on actual production server, so store locally: + CP = "Ignition\\Reports\\Config" + DP = "Ignition\\Reports\\Data" + TP = "Ignition\\Reports\\Temp" +if ApplicationScope.isGateway(ApplicationScope.getGlobalScope()): + if not os.path.exists(CP): + makedirs(CP) + if not os.path.exists(DP): + makedirs(DP) + if not os.path.exists(TP): + makedirs(TP) + +defaultColumn = { + "field": "", + "visible": True, + "editable": False, + "render": "auto", + "justify": "center", + "align": "center", + "resizable": True, + "sortable": True, + "boolean": "checkbox", + "number": "value", + "numberFormat": "none",#"0,0.##", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "header": { + "justify": "center", + "align": "center", + "style": { + "classes": "table/column-header"#, + #"backgroundColor": "#60B0D2", + #"borderBottomColor": "#D5D5D5", + #"borderBottomStyle": "solid", + #"borderBottomWidth": "1px", + #"borderRightColor": "#D5D5D5", + #"borderRightStyle": "solid", + #"borderRightWidth": "1px" + } + } +} + +defaultSeries = { + "name": "", + "label": { + "text": "" + }, + "visible": True, + "hiddenInLegend": False, + "defaultState": { + "visible": True + }, + "data": { + "source": "", + "x": "", + "y": "" + }, + "xAxis": "", + "yAxis": "", + "zIndex": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "render": "column", + "candlestick": { + "open": { + "x": "", + "y": "" + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "appearance": { + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "stacked": False, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "heatRules": { + "enabled": False, + "max": "", + "min": "", + "dataField": "" + } + } + }, + "column": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "stacked": False, + "width": None, + "height": None, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "heatRules": { + "enabled": False, + "max": "", + "min": "", + "dataField": "" + } + } + }, + "line": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "connect": True, + "tensionX": 1, + "tensionY": 1, + "minDistance": 0.5, + "stroke": { + "width": 3, + "opacity": 1, + "color": "", + "dashArray": "" + }, + "fill": { + "opacity": 0, + "color": "" + }, + "bullets": [ + { + "enabled": False, + "render": "circle", + "width": 10, + "height": 10, + "label": { + "text": "{value}", + "position": { + "dx": 0, + "dy": 0 + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "rotation": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + }, + "rotation": "" + }, + "heatRules": { + "enabled": False, + "max": 100, + "min": 2, + "dataField": "" + } + } + ] + } + }, + "stepLine": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "connect": True, + "tensionX": 1, + "tensionY": 1, + "minDistance": 0.5, + "stroke": { + "width": 3, + "opacity": 1, + "color": "", + "dashArray": "" + }, + "fill": { + "opacity": 0, + "color": "" + }, + "bullets": [ + { + "enabled": True, + "render": "circle", + "width": 10, + "height": 10, + "label": { + "text": "{value}", + "position": { + "dx": 0, + "dy": 0 + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "rotation": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + }, + "rotation": "" + }, + "heatRules": { + "enabled": False, + "max": 100, + "min": 2, + "dataField": "" + } + } + ] + } + } +} + +####################################################### +####################################################### +####################################################### +#### Functions +####################################################### + +def checkRole(filename, roles=[]): + roles = [role.split("/")[-1] for role in roles] + if "Administrator" in roles: # Admin reports has "@" in the beginning + return True + elif filename[0] == "#" and "Maintenance" in roles: + return True + elif filename[0] not in ["@", "#"]: + return True + else: + return False +def checkCompatibility(filename, extensions=[".csv", ".sql"]): + if filename[-4:].lower() in extensions: + return True + else: + return False + +def generateColumn(field, extra={}): + column = copy.deepcopy(defaultColumn) + column["field"] = field + # Convert title: + title = utils.prettyTitle(field) + column["header"]["title"] = title + # Apply rendering styles: + if title.endswith("(%)"): + column["numberFormat"] = "0.##%" + # Apply overrides: + for prop, value in extra.iteritems(): + column[prop] = value + return column + +def generateSeries(field, extra={}): + series = copy.deepcopy(defaultSeries) + series["name"] = field + series["data"]["y"] = field + # Convert title: + series["label"]["text"] = utils.prettyTitle(field) + # Apply overrides: + for prop, value in extra.iteritems(): + series[prop] = value + return series + +def generateZip(filenames, rootPath): + if len(filenames) > 2000: + return {'err': "Too many files! Max of 2000 allowed."} + # Encode filenames (since they are unicode): + filenames = [filename.encode('UTF-8', 'replace') for filename in filenames] + # Determine greatest common prefix to strip out for filenames in zip: + prefix = os.path.commonprefix(filenames) + if prefix.rfind('\\') >= 0: + prefix = prefix[:prefix.rfind('\\')+1] + else: + prefix = "" + prefixOmmit = len(prefix) + # Add files to zip: + zippath = os.path.join(TP, str(uuid.uuid4()) + ".zip") + with ZipFile(zippath, "w", ZIP_DEFLATED) as z: + for filename in filenames: + filepath = os.path.join(rootPath, filename) + try: + z.write(filepath, filename[prefixOmmit:]) + except: + return {'err': "File doesn't exist!"} + # Read contents of zip: + content = system.file.readFileAsBytes(zippath) + os.remove(zippath) + return {'content': content} + +def getConfigs(configPath = CP, roles = []): + if roles is None: + roles = [] + # Get custom reports: + return sorted([f for f in listdir(configPath) if isfile(join(configPath, f)) and checkRole(f, roles) and checkCompatibility(f)]) + +def uploadConfig(filename, contents, configPath = CP): + filepath = join(configPath, filename) + #if system.file.fileExists(filepath): + #return "Config file already exists!\r\nYou must delete the config before uploading over it." + if not checkCompatibility(filename): + return "File extension not compatible!\r\nThe supported extensions are: csv, sql" + else: + system.file.writeFile(filepath, contents, False) + +def downloadConfig(filename, configPath = CP): + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return {'err': "Config file doesn't exist!"} + else: + return {'contents': system.file.readFileAsString(filepath, 'UTF-8')} + +def downloadConfigs(filenames, configPath = CP): + if len(filenames) == 1: + filename = filenames[0] + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return "Config file doesn't exist!" + else: + system.perspective.download(filename, system.file.readFileAsString(filepath, 'UTF-8')) + elif len(filenames) > 1: + result = generateZip(filenames, configPath) + if "err" in result: + return result["err"] + else: + system.perspective.download("configs.zip", result["content"]) + +def deleteConfigs(filenames, configPath = CP): + for filename in filenames: + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return "Config file doesn't exist!" + else: + os.remove(filepath) + +def getOldReports(dataPath = DP, roles = []): + if roles is None: + roles = [] + # Get old reports: + reports = [] + for root, dirs, files in os.walk(dataPath): + path = root[len(dataPath):].strip("\\") + for name in files: + if checkRole(name, roles) and checkCompatibility(name, extensions=[".csv"]): + reports.append((path, name)) + return reports + +def downloadOldReport(filename, dataPath = DP): + filepath = join(dataPath, filename) + if not system.file.fileExists(filepath): + return {'err': "Report file doesn't exist!"} + else: + return {'contents': system.file.readFileAsString(filepath, 'UTF-8')} + +def downloadOldReports(filenames, dataPath = DP): + if len(filenames) > 2000: + return {'err': "Too many files! Max of 2000 allowed."} + # Encode filenames (since they are unicode): + filenames = [filename.encode('UTF-8', 'replace') for filename in filenames] + # Determine greatest common prefix to strip out for filenames in zip: + prefix = os.path.commonprefix(filenames) + if prefix.rfind('\\') >= 0: + prefix = prefix[:prefix.rfind('\\')+1] + else: + prefix = "" + prefixOmmit = len(prefix) + # Open in-memory zip: + zmem = StringIO.StringIO() + # Add files to zip: + with closing(ZipFile(zmem, "w", ZIP_DEFLATED)) as z: + for filename in filenames: + filepath = os.path.join(dataPath, filename) + z.write(filepath, filename[prefixOmmit:]) + # Read contents of zip: + zmem.seek(0) + contents = zmem.read() + # Send zip: + return {'contents': contents} + +def retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath = CP, server = "Ignition OPC UA Server"): + # Retrieve values of the tag table: + plcResults = system.opc.readValues(server, plcTagPaths) + ignitionResults = system.tag.readAll(ignitionTagPaths) + # Retrieve values of the plc tags: + for i, result in enumerate(system.opc.readValues(server, plcTagPaths)): + (r, c) = plcTagPos[i] + if result.value is not None: + # Retrieved a value, so add it: + values[r][c] = result.value + # Retrieve values of the ignition tags: + for i, result in enumerate(system.tag.readAll(ignitionTagPaths)): + (r, c) = ignitionTagPos[i] + if result.value is not None: + # Retrieved a value, so add it: + val = result.value + try: + val = round(float(val), 2) + except: + pass + values[r][c] = val + # Generate columns + columns = [] + for col in headers: + column = copy.deepcopy(defaultColumn) + column['field'] = col + columns.append(column) + # Return data table: + return {'data': values, 'columns': columns} + +def readDataTable(headers, rows, configPath = CP, server = "Ignition OPC UA Server"): + # Default results: + values = [{} for row in range(len(rows))] + # Extract tags: + plcTagPaths = [] + plcTagPos = [] + ignitionTagPaths = [] + ignitionTagPos = [] + for r, row in enumerate(rows): + for c, val in enumerate(row[:len(headers)]): + column = headers[c] + if val is not None and len(val) > 0 and val[0] == "[": + # Default value: + values[r][column] = { + "value": "ERR: NOT FOUND", + "style": { "background": "#F88" } + } + # Determine type of tag: + if val.lower().startswith("[ignition]"): + # Is an Ignition tag + ignitionTagPaths.append(val[10:]) + ignitionTagPos.append((r, column)) + else: + # Is a PLC tag + plcTagPaths.append(val) + plcTagPos.append((r, column)) + elif val is not None and len(val) > 0 and val[0] == "'": + # Is not a tag, treat as string: + values[r][column] = val[1:] + else: + # Is not a tag, treat as value: + values[r][column] = val + # Retrieve and return data table: + return retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath, server) + +def readJsonTable(headers, json, configPath = CP, server = "Ignition OPC UA Server"): + # Default results: + values = [{} for row in range(len(json))] + # Extract tags: + plcTagPaths = [] + plcTagPos = [] + ignitionTagPaths = [] + ignitionTagPos = [] + for r, row in enumerate(values): + for column in headers: + val = json[r].get(column, None) + if val is not None and len(val) > 0 and val[0] == "[": + # Default value: + row[column] = { + "value": "ERR: NOT FOUND", + "style": { "background": "#F88" } + } + # Determine type of tag: + if val.lower().startswith("[ignition]"): + # Is an Ignition tag + ignitionTagPaths.append(val[10:]) + ignitionTagPos.append((r, column)) + else: + # Is a PLC tag + plcTagPaths.append(val) + plcTagPos.append((r, column)) + elif val is not None and len(val) > 0 and val[0] == "'": + # Is not a tag, treat as string: + row[column] = val[1:] + else: + # Is not a tag, treat as value: + row[column] = val + # Retrieve and return data table: + return retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath, server) + +def readCSVTable(filename, configPath = CP, server = "Ignition OPC UA Server"): + # Open CSV file: + filepath = join(configPath, filename) + if system.file.fileExists(filepath): + with codecs.open(filepath, mode='rb', encoding='UTF-8') as csvfile: + rows = csv.reader(csvfile) + headers = rows.next() + rows = list(rows) + # Retrieve data: + return readDataTable(headers, rows, configPath, server) + return {'err': "Config file doesn't exist!"} + +def readSQLTable(filename, configPath = CP): + # Open SQL file: + filepath = join(configPath, filename) + sql = "" + try: + sql = system.file.readFileAsString(filepath, 'UTF-8') + except: + return {'err': "Config file doesn't exist!"} + data = None + values = None + headers = None + try: + data = system.db.runQuery(sql).getUnderlyingDataset() + headers = [name for name in data.getColumnNames()] + def parse(r, c): + v = data.getValueAt(r, c) + return v if v <> None else "null" + values = [{headers[c]: parse(r, c) for c in range(data.getColumnCount())} for r in range(data.getRowCount())] + except: + return {'err': "Bad SQL:\r\n"+sql} + # Generate columns + columns = [] + for col in headers: + column = defaultColumn.copy() + column['field'] = col + columns.append(column) + # Return data table: + return {'data': values, 'columns': columns} + +def readTable(filename, configPath = CP, server = "Ignition OPC UA Server"): + extension = filename.split(".")[-1].lower() + # Check type of data: + if extension == "csv": + return readCSVTable(filename, configPath, server) + elif extension == "sql": + return readSQLTable(filename, configPath) + else: + return {'err': "File extension not compatible!\r\nThe supported extensions are: csv, sql"} + +#def getAlarmHitListBySystem(sys, startDate, endDate, projectName=system.util.getProjectName()): +# # Run the Named Query +# params = {"startDate": startDate, "endDate": endDate, "system": sys} +# try: +# # Gateway Scope: +# return system.db.runNamedQuery(projectName, "AlarmHitListBySystem", params) +# except: +# # Project Scope: +# return system.db.runNamedQuery("AlarmHitListBySystem", params) + + + +def importFromCSV(filename, dataPath = DP, numDefault=0, strDefault=""): + # Open CSV file: + filepath = join(dataPath, filename) + with codecs.open(filepath, mode='rb', encoding='UTF-8') as csvfile: + rows = csv.reader(csvfile) + headers = rows.next() + rows = list(rows) + # Create all other types: + values = [[str(v) for v in row] for row in rows] + textValues = [[""]*len(headers)]*len(values) + errValues = [[False]*len(headers)]*len(values) + isTagValues = errValues + # Return data table: + return { + 'values': system.dataset.toDataSet(headers, values), + 'text': system.dataset.toDataSet(headers, textValues), + 'errors': system.dataset.toDataSet(headers, errValues), + 'isTag': system.dataset.toDataSet(headers, isTagValues), + 'numDefault': numDefault, 'strDefault': strDefault + } + return {'err': "Report file doesn't exist!"} + +def exportToCSV(filename, dataset, text=None, numDefault=None, strDefault=None): + with open(filename, mode='wb') as csv_file: + writer = csv.writer(csv_file, quoting=csv.QUOTE_ALL) + writer.writerow(dataset.getColumnNames()) + dataset = system.dataset.toPyDataSet(dataset) + if text is not None: + text = system.dataset.toPyDataSet(text) + else: + text = dataset + def check(v, r, c): + try: + if len(text[r][c]) > 0 or v in [numDefault, strDefault]: + return text[r][c] + except: + pass + return v + for row in [[check(v, r, c) for c, v in enumerate(row)] for r, row in enumerate(dataset)]: + writer.writerow(row) \ No newline at end of file diff --git a/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a b/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a new file mode 100644 index 00000000..111ac8b3 --- /dev/null +++ b/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a @@ -0,0 +1,18 @@ +WITH GAYLORDS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + gaylord_id AS gaylord, + SUM(count) AS count + FROM gl_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY gaylord_id + ORDER BY gaylord_id +) +SELECT + start_timestamp, + end_timestamp, + gaylord, + /* Counts: */ + count +FROM GAYLORDS; \ No newline at end of file diff --git a/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac b/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac new file mode 100644 index 00000000..198a4d1e --- /dev/null +++ b/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007EFC", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea b/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea new file mode 100644 index 00000000..bfcced54 --- /dev/null +++ b/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FCC400" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf b/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf new file mode 100644 index 00000000..2512e968 --- /dev/null +++ b/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf @@ -0,0 +1,1387 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1467, + "width": 709 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RO16A_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 240, + "x": 25, + "y": 704 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16A_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 240, + "x": 44, + "y": 963 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 720, + "x": 303, + "y": 523 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 170, + "x": 303, + "y": 1242 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_09" + }, + "position": { + "height": 20, + "width": 310, + "x": 322, + "y": 1431 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 136, + "x": 651, + "y": 1412 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16A_02CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 45, + "y": 943 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left" + }, + "status": { + "color": "#FFF" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_08CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 323, + "y": 1411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_08CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_10CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 631, + "y": 1411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_10CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16A_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 26, + "y": 830 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16A_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 138, + "y": 946 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1204 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 470, + "y": 1414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 634, + "y": 1384 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16A_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 911 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RO16_11_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RO16A_01_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 717 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 871 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 890 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_06_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 262, + "y": 1015 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_07_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 304, + "y": 1379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_09_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 599, + "y": 1410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 630, + "y": 1344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 630, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 76, + "y": 947 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16A_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 107, + "y": 947 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_06_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 304, + "y": 1077 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_09_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 386, + "y": 1452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_09_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 417, + "y": 1452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_11_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 614, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_11_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 693, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16A_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 47, + "y": 886 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16A_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 47, + "y": 871 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_06_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 266, + "y": 998 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_07_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_09_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 582, + "y": 1414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 672, + "y": 1306 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 672, + "y": 1291 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 634, + "y": 1327 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16A_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 35, + "y": 942 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 35, + "y": 716 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 282, + "y": 953 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 56, + "y": 953 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1241 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_06_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1046 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_07_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_09_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 630, + "y": 1421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_09_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 334, + "y": 1421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_11_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 641, + "y": 1278 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_11_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 641, + "y": 1401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 b/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 new file mode 100644 index 00000000..c0472e04 --- /dev/null +++ b/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 @@ -0,0 +1,264 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "tagPath": "" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 110, + "width": 66 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 102, + "x": 56, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 5, + "y": 62 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1, + "y": 82 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 43, + "x": 65, + "y": 79 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 5, + "y": 47 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 43, + "x": 65, + "y": 56 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 b/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 new file mode 100644 index 00000000..3b06f627 --- /dev/null +++ b/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFF", + "borderLeftColor": "#000", + "borderLeftStyle": "solid", + "borderLeftWidth": "2px", + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 b/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 new file mode 100644 index 00000000..d9310f1d --- /dev/null +++ b/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1621, + "width": 969 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Singulator" + }, + "position": { + "height": 1601, + "width": 949, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Inbound" + }, + "position": { + "height": 40, + "width": 106, + "x": 240, + "y": 1530 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 700, + "y": 280 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 b/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 new file mode 100644 index 00000000..914bd6ce --- /dev/null +++ b/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 @@ -0,0 +1,71 @@ +import re +import system + +reSource = re.compile(r"prov\:([^:]+)\:/tag\:([^:]+)\:") +reTagPathProvider = re.compile(r"(\[[^\]]+\])?(.+)") + +SUBVIEWS = { +} + +def resolveScreenByTagPath(tagPath, defaultOverview="Windows/Graphics/Overview", defaultError=""): + try: + (provider, path) = reTagPathProvider.findall(tagPath)[0] + if provider == None: + provider = "[default]" + except: + return defaultError + pathParts = path.split("/") + tags = [provider+"/".join(pathParts[:i])+"/Parameters.GoToScreen" for i in range(len(pathParts), 0, -1)] + for value in system.tag.readBlocking(tags): + if value.quality.isGood(): + value = value.getValue() + if value not in (None, ""): + return value + else: + return defaultError + # Couldn't find a PathToInstance parameter, default to overview: + return defaultOverview + +def resolveScreenBySource(source, defaultOverview="Windows/Graphics/Overview", defaultError=""): + try: + (provider, path) = reSource.findall(source)[0] + tagPath = "["+provider+"]"+path + except: + return defaultOverview + return resolveScreenByTagPath(tagPath, defaultOverview, defaultError) + + +def filterAlarms(screen, alarms): + # Only filter if this isn't the overview: + if screen <> "Windows/Graphics/Overview": + # Lookup views to filter on + views = SUBVIEWS.get(screen, [screen]) + [""] # Include any device tags not set up yet for all views + badrows = [row for row in range(alarms.getRowCount()) if resolveScreenBySource(alarms.getValueAt(row, "source")) not in views] + # Return filtered rows: + return system.dataset.deleteRows(alarms, badrows) + else: + return alarms + +""" +reMCP = re.compile(r"\[([^\]]+)\]") + +def resolveScreen(location, plctag): + conveyor = location.split(".")[0] + conveyor_parts = conveyor.split("-") + conveyor_num = int(conveyor_parts[1].strip(string.ascii_letters)) if len(conveyor_parts) > 1 and conveyor_parts[1].isalnum() and not conveyor_parts[1].isalpha() else 0 + area = conveyor_parts[0] + area_num = int(area.strip(string.ascii_letters)) if area.isalnum() and not area.isalpha() else 0 + mcp = reMCP.findall(plctag)[0] + + return "Windows/Graphics/Overview" + +def filterAlarms(screen, alarms): + # Lookup views to filter on + views = SUBVIEWS.get(screen, []) + # Only filter if there are views we found: + if len(views) > 0: + badrows = [row for row in range(alarms.getRowCount()) if resolveScreen(alarms.getValueAt(row, "device"), alarms.getValueAt(row, "plctag")) not in views] + # Return filtered rows: + return system.dataset.deleteRows(alarms, badrows) + else: + return alarms""" diff --git a/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 b/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 new file mode 100644 index 00000000..b02087ae --- /dev/null +++ b/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 @@ -0,0 +1,13 @@ +{ + "base": { + "style": {} + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "#DBEFFA" + } + } + ] +} \ No newline at end of file diff --git a/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 b/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 new file mode 100644 index 00000000..7314cda3 --- /dev/null +++ b/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 @@ -0,0 +1,313 @@ +{ + "custom": {}, + "params": { + "tab": "Active Alarms" + }, + "propConfig": { + "params.tab": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Error", + "value": [ + "Error" + ] + }, + { + "label": "Warning", + "value": [ + "Warning", + "Error" + ] + }, + { + "label": "Message", + "value": [ + "Message", + "Warning", + "Error" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "Error" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 100, + "x": "calc(100% - 335px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Min Class:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "custom": { + "pages": [ + "Active", + "History", + "HitList" + ] + }, + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttab \u003d self.page.props.path.split(\"/\")[-1]\n\t# Search for tab:\n\tfor i, page in enumerate(self.custom.pages):\n\t\tif page.lower() \u003d\u003d tab:\n\t\t\treturn i\n\t# Default value in case of not finding the tab\n\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tpage \u003d \"/alarms/\"+self.custom.pages[self.props.currentTabIndex].lower()\n\tif previousValue \u003c\u003e currentValue and self.page.props.path.lower() \u003c\u003e page.lower():\n\t\tsystem.perspective.navigate(page)" + }, + "persistent": true + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 130 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Active Alarms", + "Alarm History", + "Alarm Hit List" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 76px)", + "width": "100%", + "y": 76 + }, + "propConfig": { + "props.params.classDropdownValue": { + "binding": { + "config": { + "path": "../Dropdown.props.value" + }, + "type": "property" + }, + "persistent": true + }, + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Alarms/\"\r\n+property(\"../TabContainer.custom.pages[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "24 rows" + }, + "path": "Windows/Alarms/Active" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 b/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 new file mode 100644 index 00000000..2887093c --- /dev/null +++ b/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF8000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 b/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 new file mode 100644 index 00000000..8ddfe1be --- /dev/null +++ b/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#4747FF" + } + } +} \ No newline at end of file diff --git a/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa b/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa new file mode 100644 index 00000000..5bf085b1 --- /dev/null +++ b/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa @@ -0,0 +1,57 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"custom-reports-refreshlist\", {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\treports.uploadConfig(event.file.name, event.file.getString())\n\t\n\t# Close popup:\n\t#system.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "maxUploads": 50, + "supportedFileTypes": [ + "csv", + "sql" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 b/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 new file mode 100644 index 00000000..0360a08c --- /dev/null +++ b/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 @@ -0,0 +1,233 @@ +{ + "custom": { + "plc": "", + "searchId": "value", + "state": 0, + "string": "Inactive" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Faulted" + }, + { + "input": 0, + "output": "Inactive" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 30 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "PX", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 b/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 new file mode 100644 index 00000000..797bdf79 --- /dev/null +++ b/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 @@ -0,0 +1,286 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "Conveyor" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": { + "inner": "#D2B48C", + "outer": "#C49C67" + }, + "showAlways": false, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Gaylord" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b b/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b new file mode 100644 index 00000000..90d4dab7 --- /dev/null +++ b/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b @@ -0,0 +1,299 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "LS1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": true, + "showLabel": true + }, + "status": { + "color": [ + "#AAA" + ], + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LimitSwitch" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.config.showLabel": { + "binding": { + "config": { + "path": "view.params.props.config.showLabel" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 b/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 new file mode 100644 index 00000000..d34b1464 --- /dev/null +++ b/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 @@ -0,0 +1,643 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 600, + "width": 750 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "TitleLabel" + }, + "position": { + "height": 35, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + }, + "text": "Heatmap Options" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ShiftLabel" + }, + "position": { + "height": 25, + "width": "33%", + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Time \u0026 Shifts" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TimeStartLabel" + }, + "position": { + "height": 30, + "width": 75, + "y": 65 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tstartDate \u003d self.props\n\tendDate \u003d self.getSibling(\"TimeEndInput\").props\n\thours \u003d system.date.hoursBetween(startDate.value, endDate.value)\n\tif hours \u003e 30*24:\n\t\t# Cap endDate to within 30 days of startDate:\n\t\tendDate.value \u003d system.date.addDays(startDate.value, 30)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TimeStartInput" + }, + "position": { + "height": 30, + "width": "calc(33% - 75px)", + "x": 75, + "y": 65 + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-02-13 00:00:00", + "formattedValues": { + "date": "2021-02-13", + "datetime": "2021-02-13 00:00:00", + "time": "00:00:00" + }, + "value": { + "$": [ + "ts", + 192, + 1613256769474 + ], + "$ts": 1613192400000 + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "TimeEndLabel" + }, + "position": { + "height": 30, + "width": 75, + "y": 95 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tstartDate \u003d self.getSibling(\"TimeStartInput\").props\n\tendDate \u003d self.props\n\thours \u003d system.date.hoursBetween(startDate.value, endDate.value)\n\tif hours \u003e 30*24:\n\t\t# Cap startDate to within 30 days of endDate:\n\t\tstartDate.value \u003d system.date.addDays(endDate.value, -30)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TimeEndInput" + }, + "position": { + "height": 30, + "width": "calc(33% - 75px)", + "x": 75, + "y": 95 + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-02-14 00:00:00", + "formattedValues": { + "date": "2021-02-14", + "datetime": "2021-02-14 00:00:00", + "time": "00:00:00" + }, + "value": { + "$": [ + "ts", + 192, + 1613256769474 + ], + "$ts": 1613278800000 + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "AlarmTypeTable" + }, + "position": { + "height": "calc(100% - 145px)", + "width": "33%", + "x": 251.25, + "y": 90 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../AlarmTypeAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "queryPath": "Alarms/HeatmapUniqueAlarms" + }, + "type": "query" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../AlarmTypeAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "AlarmTypeLabel" + }, + "position": { + "height": 25, + "width": "33%", + "x": 251.25, + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Alarm Type" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmTypeAll" + }, + "position": { + "height": 25, + "width": "33%", + "x": 251.25, + "y": 65 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid" + }, + "text": "Select All" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "ShiftAll" + }, + "position": { + "height": 25, + "width": "33%", + "y": 125 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid" + }, + "text": "No Shift Filter (24/7)" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "ShiftTable" + }, + "position": { + "height": "calc(100% - 205px)", + "width": "33%", + "y": 150 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../ShiftAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\tdata \u003d [[value.getValueAt(r, \"Name\")] for r in range(value.getRowCount()) if value.getValueAt(r, \"Enabled\")]\n\tdata \u003d [r for r in data if r[0] !\u003d \"\"]\n\treturn system.dataset.toDataSet([\"description\"], data)", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../ShiftAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "DeviceTypeLabel" + }, + "position": { + "height": 25, + "width": "33%", + "x": 502.5, + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Device Type" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceTypeAll" + }, + "position": { + "height": 25, + "width": "33%", + "x": 502.5, + "y": 65 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid" + }, + "text": "Select All" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "DeviceTypeTable" + }, + "position": { + "height": "calc(100% - 145px)", + "width": "33%", + "x": 502.5, + "y": 90 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../DeviceTypeAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../DeviceTypeAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "data": { + "$": [ + "ds", + 192, + 1597260961733 + ], + "$columns": [ + { + "data": [ + "Beacons", + "EIPs", + "Encoders", + "Estops", + "Limit Switches", + "MCPs", + "Photo Eyes", + "Push Buttons", + "Scanners", + "VFDs", + "Solenoids", + "Conveyors" + ], + "name": "description", + "type": "String" + }, + { + "data": [ + "beacon", + "eip", + "encoder", + "estop", + "limitswitch", + "mcp", + "photoeye", + "pushbutton", + "scanner", + "vfd", + "solenoid", + "conveyor" + ], + "name": "type", + "type": "String" + } + ] + }, + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport re\n\timport time\n\t\n\t# Gather Shifts:\n\tshifts \u003d []\n\tshiftsQuery \u003d []\n\tshiftsText \u003d \"None\"\n\tif not self.getSibling(\"ShiftAll\").props.selected:\n\t\t# Retrieve shift table:\n\t\tshiftTable \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t\tshiftTable \u003d {row[\"Name\"]: row for row in shiftTable}\n\t\t# Grab selection:\n\t\tselection \u003d self.getSibling(\"ShiftTable\").props.selection.data\n\t\tshifts \u003d [dat[\"description\"] for dat in selection]\n\t\tshiftsText \u003d \", \".join(shifts)\n\t\t# Generate shift query:\n\t\tfor shift in selection:\n\t\t\tif shift[\"description\"] in shiftTable:\n\t\t\t\tshift \u003d shiftTable[shift[\"description\"]]\n\t\t\t\tline \u003d []\n\t\t\t\t# Add day filter:\n\t\t\t\tdays \u003d [str(i+1) for i, day in enumerate([\"isSunday\", \"isMonday\", \"isTuesday\", \"isWednesday\", \"isThursday\", \"isFriday\", \"isSaturday\"]) if shift[day]]\n\t\t\t\t# If no days, ignore this shift:\n\t\t\t\tif len(days) \u003c\u003d 0:\n\t\t\t\t\tshiftsQuery.append(\"false\")\n\t\t\t\t\tcontinue\n\t\t\t\t# If not all days are present, then add day filter:\n\t\t\t\tif len(days) \u003c 7:\n\t\t\t\t\tline.append(\"DAYOFWEEK(eventtime) IN (\"+\",\".join(days)+\")\")\n\t\t\t\t# If time range is incompatible (starttime \u003e\u003d endtime), then remove shift:\n\t\t\t\t# TODO: Handle time ranges that go across midnight\n\t\t\t\tif shift[\"StartHour\"]*60+shift[\"StartMinute\"] \u003e\u003d shift[\"EndHour\"]*60+shift[\"EndMinute\"]:\n\t\t\t\t\tshiftsQuery.append(\"false\")\n\t\t\t\t\tcontinue\n\t\t\t\t# Add time range:\n\t\t\t\tline.append(\"TIME(eventtime) BETWEEN \\\"{:02d}:{:02d}:00\\\" AND \\\"{:02d}:{:02d}:00\\\"\".format(shift[\"StartHour\"], shift[\"StartMinute\"], shift[\"EndHour\"], shift[\"EndMinute\"]))\n\t\t\t\t# If nothing was added to line, then treat shift as 24/7, which then we can ignore all shifts:\n\t\t\t\tif len(line) \u003c\u003d 0:\n\t\t\t\t\tshiftsQuery \u003d []\n\t\t\t\t\tbreak\n\t\t\t\t# Add shift to shifts:\n\t\t\t\tshiftsQuery.append(\" AND \".join(line))\n\t# Gather Alarms:\n\talarms \u003d []\n\talarmsText \u003d \"All\"\n\tif not self.getSibling(\"AlarmTypeAll\").props.selected:\n\t\talarms \u003d self.getSibling(\"AlarmTypeTable\").props.selection.data\n\t\talarms \u003d [dat[\"description\"] for dat in alarms]\n\t\talarmsText \u003d \", \".join(alarms)\n\tif len(alarms) \u003d\u003d 0:\n\t\talarms \u003d self.getSibling(\"AlarmTypeTable\").props.data\n\t\talarms \u003d [alarms.getValueAt(r, \"description\") for r in range(alarms.getRowCount())]\n\t# Gather Devices:\n\tdevices \u003d []\n\tdeviceTypes \u003d []\n\tdevicesText \u003d \"All\"\n\tif self.getSibling(\"DeviceTypeAll\").props.selected:\n\t\tdataset \u003d self.getSibling(\"DeviceTypeTable\").props.data\n\t\tdevices \u003d [dataset.getValueAt(row, \"description\") for row in range(dataset.getRowCount())]\n\t\tdeviceTypes \u003d [dataset.getValueAt(row, \"type\") for row in range(dataset.getRowCount())]\n\telse:\n\t\tdataset \u003d self.getSibling(\"DeviceTypeTable\").props.data\n\t\tdevices \u003d [dat[\"description\"] for dat in self.getSibling(\"DeviceTypeTable\").props.selection.data]\n\t\tdeviceTypes \u003d [dataset.getValueAt(row, \"type\") for row in range(dataset.getRowCount()) if dataset.getValueAt(row, \"description\") in devices]\n\t\tdevicesText \u003d \", \".join(devices)\n\tdevices \u003d [dat.replace(\" \", \"\") for dat in devices]\n\tif len(devices) \u003d\u003d 0:\n\t\tdevicesText \u003d \"None\"\n\t\n\t# Run report:\n\t# Sanitize:\n\talarmQuery \u003d (\u0027\"\u0027+alarm.replace(\"\\\\\", \"\\\\\\\\\").replace(\u0027\"\u0027, \u0027\\\\\"\u0027)+\u0027\"\u0027 for alarm in alarms)\n\tshiftsQuery \u003d [\"(\"+shift+\")\" for shift in shiftsQuery]\n\tparams \u003d {\n\t\t\"startDate\": self.getSibling(\"TimeStartInput\").props.formattedValue,\n\t\t\"endDate\": self.getSibling(\"TimeEndInput\").props.formattedValue,\n\t\t\"alarms\": \",\".join(alarmQuery),\n\t\t\"shifts\": \" \" if len(shiftsQuery) \u003d\u003d 0 else \"AND (\"+\" OR \".join(shiftsQuery)+\")\",\n\t\t\"devices\": \u0027\"\"\u0027 if len(deviceTypes) \u003d\u003d 0 else \",\".join([\u0027\"\u0027+device+\u0027\"\u0027 for device in deviceTypes])\n\t}\n\t#system.perspective.print(params)\n\tdata \u003d system.db.runNamedQuery(\"Alarms/Heatmap\", params)\n\t\n\t# Apply and activate heatmap:\n\tself.session.custom.heatmapSettings \u003d {\n\t\t\"enabled\": True,\n\t\t\"time\": {\n\t\t\t\"start\": params[\"startDate\"],\n\t\t\t\"end\": params[\"endDate\"]\n\t\t},\n\t\t\"shifts\": shifts,\n\t\t\"alarms\": alarms,\n\t\t\"devices\": devices,\n\t\t\"shiftsText\": shiftsText,\n\t\t\"alarmsText\": alarmsText,\n\t\t\"devicesText\": devicesText,\n\t\t\"data\": data\n\t}\n\t\n\t# Close popup:\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(page\u003d\"/\")\n\telse:\n\t\tsystem.perspective.closePopup(\"\")\n\t\t# Force client to graphics screens only:\n\t\tif self.page.props.primaryView !\u003d \"Windows/GraphicsWrapper\":\n\t\t\tsystem.perspective.navigate(page\u003d\"/\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "RunButton" + }, + "position": { + "height": 50, + "width": "100%", + "y": "calc(100% - 50px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {../TimeStartInput.props.value} !\u003d null\r\n\u0026\u0026{../TimeEndInput.props.value} !\u003d null\r\n\u0026\u0026({../ShiftAll.props.selected}||{../ShiftTable.props.selection.selectedRow}!\u003dnull)\r\n\u0026\u0026({../AlarmTypeAll.props.selected}||{../AlarmTypeTable.props.selection.selectedRow}!\u003dnull)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Run heatmap" + }, + "type": "ia.input.button" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tnow \u003d system.date.now()\n\tstart \u003d system.date.midnight(now)\n\tend \u003d system.date.addDays(start, 1)\n\tself.getChild(\"TimeStartInput\").props.value \u003d start\n\tself.getChild(\"TimeEndInput\").props.value \u003d end" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window", + "minWidth": "750px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf b/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf new file mode 100644 index 00000000..5dcbe572 --- /dev/null +++ b/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf @@ -0,0 +1,495 @@ +{ + "custom": { + "isMaint": false + }, + "params": { + "titleExtra": "0 of 0" + }, + "propConfig": { + "custom.isMaint": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\ttabs \u003d []\n\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Jam Cameras" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\t# Update jam cameras:\n\tdata \u003d system.dataset.updateRow(self.props.data, event.row, {\n\t\tevent.column: event.value\n\t})\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "JamCameras" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.columns[0].editable": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "type": "property" + } + }, + "props.columns[1].editable": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/JamCameras" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "field": "Name", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM/DD/YYYY", + "field": "Address", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 300 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"JamCameras\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\tnewRow \u003d [\"New Jam Camera\", \"http://localhost\"]\n\tdata \u003d system.dataset.addRow(cameras.props.data, newRow)\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_New" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 435px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {view.custom.isMaint}\r\n\u0026\u0026 len({../JamCameras.props.data}) \u003c 32" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": {}, + "text": "Add New" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\trow \u003d cameras.props.selection.selectedRow\n\tdata \u003d system.dataset.deleteRow(cameras.props.data, row)\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Delete" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 290px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {view.custom.isMaint}\r\n\u0026\u0026 {../JamCameras.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": {}, + "text": "Delete Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\turl \u003d cameras.props.data.getValueAt(cameras.props.selection.selectedRow, \"Address\")\n\tsystem.perspective.navigate(url\u003durl, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Open" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 145px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "{../JamCameras.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Open Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa b/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa new file mode 100644 index 00000000..264f3b15 --- /dev/null +++ b/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa @@ -0,0 +1,130 @@ +{ + "custom": {}, + "params": { + "titleExtra": "625 rows", + "usesTimewidget": false + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "false" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Ethernet" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.columns": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Ethernet" + }, + "transforms": [ + { + "expression": "jsonGet({value}, \"columns\")", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Ethernet" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value.data)\n\tself.view.params.titleExtra \u003d \"{:n} rows\".format(cou)\n\t# Return data\n\treturn value.data", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Ethernet\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e b/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e new file mode 100644 index 00000000..79f787fb --- /dev/null +++ b/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e @@ -0,0 +1,323 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "state_string": "Clear", + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 80 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "60", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "60", + "y": "10" + } + ], + "viewBox": "0 0 80 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 b/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 new file mode 100644 index 00000000..f53b8f55 --- /dev/null +++ b/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 @@ -0,0 +1,319 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "FL01_01CH" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP03/FL01/FL01_01CH/Conv" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.meta.name" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 59, + "width": 224, + "x": 136, + "y": 167 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/Footer/view.json b/.resources/b98b0c6e1aa5ba7ac2575c8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e similarity index 100% rename from BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/Footer/view.json rename to .resources/b98b0c6e1aa5ba7ac2575c8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e diff --git a/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 b/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 new file mode 100644 index 00000000..e2856f54 --- /dev/null +++ b/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 @@ -0,0 +1,1062 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1700 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneOEE" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/LaneOEE" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "firsttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "lasttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "enabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Enabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "empty_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Empty Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full25_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "25% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full50_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full75_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "75% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full100_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "100% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jammed_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jammed Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "inbound_oee", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Inbound OEE" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.00%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "induct_oee", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct OEE" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.00%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Manual Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 30, + "width": 30, + "x": "calc(100% - 35px)", + "y": 5 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 30, + "width": 30, + "x": "calc(100% - 35px)", + "y": 5 + }, + "props": { + "status": { + "tooltip": "\u003cb\u003e\u003cu\u003eAbout Report:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis report adds up the duration of each state each manual chute has entered.\u003cbr\u003eIt then computes the Inbound and Induct OEE.\u003cbr\u003e\u003cbr\u003eThis report filters the data for the time period selected in the top left.\u003cbr\u003eDurations are in the format: HH:mm:ss\u003cbr\u003eMax duration is 899:59:59\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eColumns:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eStart/End Timestamp - the range of time used to compute the remaining columns for this row\u003cbr\u003eLane - the manual chute\u003cbr\u003eEnabled Duration - the total time the lane is enabled\u003cbr\u003eAvailable Duration - the total time the lane is enabled and not 100% full, jammed, or faulted\u003cbr\u003eEmpty Duration - the total time the lane is enabled and not 50% full, 100% full, jammed, or faulted\u003cbr\u003e50% Full Duration - the total time the lane is enabled and 50% full\u003cbr\u003e100% Full Duration - the total time the lane is enabled and 100% full\u003cbr\u003eJammed Duration - the total time the lane is enabled and jammed\u003cbr\u003eFaulted Duration - the total time the lane is enabled and either the divert arm or FIO is faulted\u003cbr\u003eInbound OEE - the efficiency of the FMS logic to keep the lane at 50% or 100% full, ignores jammed or faulted\u003cbr\u003eInduct OEE - the efficiency of the operators to keep the lane at empty or 50% full, ignores faulted\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eInbound OEE:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis is the efficiency of the FMS logic to keep the lane at 50% or 100% full.\u003cbr\u003eThis calculation will ignore the time spent in the jammed or faulted state.\u003cbr\u003eThe ideal efficiency is 100%. The formula is:\u003cbr\u003e(Full50 + Full100) / (Empty + Full50 + Full100)\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eInduct OEE:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis is the efficiency of the operators to keep the lane at empty or 50% full.\u003cbr\u003eThis calculation will ignore the time spent in the faulted state.\u003cbr\u003eThe time spent in the jammed state will negatively impact this efficiency.\u003cbr\u003eThe ideal efficiency is 100%. The formula is:\u003cbr\u003e(Empty + Full50) / (Empty + Full50 + Full100 + Jammed)" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 b/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 new file mode 100644 index 00000000..e10f42f0 --- /dev/null +++ b/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 @@ -0,0 +1,679 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 500, + "width": 900 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Commands" + }, + "position": { + "height": 180, + "width": "calc(100% - 330px)", + "x": 10, + "y": 10 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions" + }, + "position": { + "height": "calc(100% - 20px)", + "width": 300, + "x": "calc(100% - 310px)", + "y": 10 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Label" + }, + "position": { + "height": 32, + "width": 300, + "x": "calc(100% - 310px)", + "y": 10 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Oiler Procedure" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Text" + }, + "position": { + "height": "calc(100% - 52px)", + "width": 300, + "x": "calc(100% - 310px)", + "y": 42 + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "1) Make sure system is stopped and press enable button\u003cbr\u003e\n2) Press \"START SORTER\" to run the sorter at 10% speed\u003cbr\u003e\n3) Press \"START OIL CYCLE\" or the start push button on the oiler start/stop switch to begin the oil cycle\u003cbr\u003e\n4) Stop the sorter once the Cycle Finished indicator appears\u003cbr\u003e\n5) Disable Oiler once system is stopped", + "style": { + "paddingLeft": 5, + "paddingRight": 5 + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Commands_Label" + }, + "position": { + "height": 40, + "width": 140, + "x": 15, + "y": 20 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Oiler Commands:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/MaintEnable\"]\n\tvalues \u003d [self.props.text \u003d\u003d \"Click to Enable\"]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EnableCommands" + }, + "position": { + "height": 40, + "width": 100, + "x": 160, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "isGood({[default]MCP21_Custom/Oiler/Commands/MaintEnable})\r\n\u0026\u0026try((!{[default]MCP21_Custom/Oiler/Commands/MaintEnable}||{[default]MCP21_Custom/Oiler/Status/SorterSpeed}\u003d0), false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Commands/MaintEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Red", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Commands/MaintEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Click to Disable", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Click to Enable" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {} + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StartSorter\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartSorter" + }, + "position": { + "height": 40, + "width": 100, + "x": 265, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StartSorter})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Start Sorter" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StopSorter\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StopSorter" + }, + "position": { + "height": 40, + "width": 100, + "x": 370, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StopSorter})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red", + "color": "#FFF" + }, + "text": "Stop Sorter" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StartOilCycle\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartOilCycle" + }, + "position": { + "height": 40, + "width": 100, + "x": 475, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StartOilCycle})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Start Oil Cycle" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Status_Label" + }, + "position": { + "height": 50, + "width": 140, + "x": 15, + "y": 80 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Oiler Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleActive" + }, + "position": { + "height": 50, + "width": 100, + "x": 160, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleActive" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#0F0", + "borderStyle": "solid", + "textAlign": "center" + }, + "text": "Cycle Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleFinished" + }, + "position": { + "height": 50, + "width": 100, + "x": 265, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleFinished" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#0F0", + "borderStyle": "solid", + "textAlign": "center" + }, + "text": "Cycle Finished" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleFaulted" + }, + "position": { + "height": 50, + "width": 100, + "x": 370, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleFaulted" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#F00", + "borderColor": "#000", + "borderStyle": "solid", + "color": "#FFF", + "textAlign": "center" + }, + "text": "Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Speed_Label" + }, + "position": { + "height": 40, + "width": 140, + "x": 15, + "y": 140 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Sorter Speed:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Speed" + }, + "position": { + "height": 40, + "width": 150, + "x": 160, + "y": 140 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Status/SorterSpeed}, \"Unknown\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderStyle": "solid", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RuntimeBox" + }, + "position": { + "height": "calc(100% - 210px)", + "width": "calc(100% - 330px)", + "x": 10, + "y": 200 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Runtime_Label" + }, + "position": { + "height": 50, + "width": 140, + "x": 15, + "y": 210 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Runtime Till Next Oil Cycle:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Runtime" + }, + "position": { + "height": 50, + "width": 150, + "x": 160, + "y": 210 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Status/RuntimeTillNextCycle}, \"Unknown\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderStyle": "solid", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/ExtendTime\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExtendTime" + }, + "position": { + "height": 50, + "width": 130, + "x": 320, + "y": 210 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "isGood({[default]MCP21_Custom/Oiler/Commands/ExtendTime})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red", + "color": "#FFF" + }, + "text": "Extend Time 168 Hours" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "RuntimeRecommended_Label" + }, + "position": { + "height": 80, + "width": 250, + "x": 320, + "y": 270 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\"Mechanical Recommended Runtime in Hours Before Oiling the Chain is \"\r\n+try({[default]MCP21_Custom/Oiler/Status/RuntimeTillNextCycle}, \"xxxx\")\r\n+\" Hours\"" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd b/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd new file mode 100644 index 00000000..9835e84c --- /dev/null +++ b/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd @@ -0,0 +1,69 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "parentFolder": "" + }, + "propConfig": { + "params.parentFolder": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\tdocuments.uploadDocument(event.file, self.view.params.parentFolder)\n\t\n\t# Close popup:\n\t#system.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "fileSizeLimit": 100, + "maxUploads": 10, + "supportedFileTypes": [ + "pdf" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": 3, + "y": -7 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 b/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 new file mode 100644 index 00000000..b16ebb22 --- /dev/null +++ b/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 @@ -0,0 +1,45 @@ +WITH INDUCTS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + induct, + COUNT(*) AS total, + SUM(carriers=1) AS single_carrier, + SUM(carriers=2) AS double_carrier, + AVG(pkg_length/10) AS pkg_length_avg, + AVG(gap_leading/10) AS gap_avg + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct +), SORTERS AS ( + SELECT + sorter, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter +) +SELECT + I.start_timestamp, + I.end_timestamp, + S.sorter, + I.induct, + /* Averages: */ + ROUND(I.pkg_length_avg, 1) AS 'avg_package_length_(")', + ROUND(I.gap_avg, 1) AS 'avg_gap_(")', + /* Counts: */ + I.total AS total_count, + I.single_carrier AS single_carrier_count, + I.double_carrier AS double_carrier_count, + /* PPH: */ + ROUND(I.total*S.pph_multiplier) AS total_pph, + ROUND(I.single_carrier*S.pph_multiplier) AS single_carrier_pph, + ROUND(I.double_carrier*S.pph_multiplier) AS double_carrier_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent', + ROUND(I.single_carrier/I.total, 4) AS single_carrier_percent, + ROUND(I.double_carrier/I.total, 4) AS double_carrier_percent +FROM INDUCTS I, SORTERS S +WHERE I.sorter = S.sorter +ORDER BY S.sorter, I.induct; \ No newline at end of file diff --git a/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 b/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 new file mode 100644 index 00000000..dbe7f65c --- /dev/null +++ b/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#CCCCFF" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc b/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc new file mode 100644 index 00000000..e9119a9c --- /dev/null +++ b/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1487, + "width": 729 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Runout" + }, + "position": { + "height": 1467, + "width": 709, + "x": -62, + "y": -9 + }, + "props": { + "path": "Windows/Graphics/Templates/Runout", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 260, + "y": 450 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 60, + "y": 630 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a b/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a new file mode 100644 index 00000000..812c3c83 --- /dev/null +++ b/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 b/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 new file mode 100644 index 00000000..9740c7de --- /dev/null +++ b/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 @@ -0,0 +1,2276 @@ +{ + "custom": { + "tabData": [ + { + "chartNamedQuery": "Statistics/Gaylords/DetailsChart", + "dataNamedQuery": "Statistics/Gaylords/Details", + "idField": "gaylord", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Gaylord Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/InductDetailsChart", + "dataNamedQuery": "Statistics/AR/InductDetails", + "idField": "induct", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "AR Induct Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/RobinDetailsChart", + "dataNamedQuery": "Statistics/AR/RobinDetails", + "idField": "chute", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Robin MEP Volume", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/SorterDetailsChart", + "dataNamedQuery": "Statistics/AR/SorterDetails", + "idField": "sorter", + "isAdmin": true, + "isBar": false, + "isVisible": true, + "title": "AR Sorter Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/LaneDetailsChart", + "dataNamedQuery": "Statistics/AR/LaneDetails", + "idField": "lane", + "isAdmin": true, + "isBar": false, + "isVisible": true, + "title": "AR Lane Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": false, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Induct", + "uniqueNamedQuery": "Statistics/AR/UniqueInducts" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": false, + "isBar": true, + "isVisible": true, + "title": "Hourly Robin Volume", + "uniqueNamedQuery": "Statistics/AR/UniqueRobins" + }, + { + "chartNamedQuery": "Statistics/AR/HourlySorterChart", + "dataNamedQuery": "Statistics/AR/HourlySorter", + "idField": "sorter", + "isAdmin": true, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Sorter", + "uniqueNamedQuery": "Statistics/AR/UniqueSorters" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": true, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Lane", + "uniqueNamedQuery": "Statistics/AR/UniqueLanes" + }, + { + "chartNamedQuery": "Statistics/Sorter/InductDetailsChart", + "dataNamedQuery": "Statistics/Sorter/InductDetails", + "idField": "induct", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Induct Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/ScannerDetailsChart", + "dataNamedQuery": "Statistics/Sorter/ScannerDetails", + "idField": "scanner", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Scanner Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/SorterSummaryChart", + "dataNamedQuery": "Statistics/Sorter/SorterSummary", + "idField": "sorter", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Sorter Summary", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/SorterDetailsChart", + "dataNamedQuery": "Statistics/Sorter/SorterDetails", + "idField": "sorter", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Sorter Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/LaneDetailsChart", + "dataNamedQuery": "Statistics/Sorter/LaneDetails", + "idField": "lane", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Lane Details", + "uniqueNamedQuery": "" + } + ], + "timewidget": { + "endDate": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637107200000 + }, + "mode": "currentDay", + "startDate": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637020800000 + }, + "update": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637031280585 + } + }, + "titleExtra": "0 rows" + }, + "params": {}, + "propConfig": { + "custom.tabData": { + "binding": { + "config": { + "struct": { + "auth": "{session.props.auth.user.roles}", + "tabs": "{[default]Gateway/StatisticsTabs}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\tauth \u003d value.auth\n\ttabs \u003d value.tabs\n\tisNotAuth \u003d (auth \u003d\u003d None or len(auth) \u003d\u003d 0 or len([i for i in auth if i in roles]) \u003d\u003d 0)\n\treturn [v for v in utils.datasetToJSON(tabs) if v[\"isVisible\"] and not (v[\"isAdmin\"] and isNotAuth)]", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "custom.tabDataAdmin": { + "persistent": true + }, + "custom.tabDataOperator": { + "persistent": true + }, + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.tabData \u003c\u003e None and len(self.custom.tabData) \u003e 0:\n\t\troot \u003d self.getChild(\"root\")\n\t\troot.getChild(\"Table\").forceRefresh()\n\t\troot.getChild(\"LineChart\").forceRefresh()\n\t\troot.getChild(\"BarChart\").forceRefresh()" + }, + "persistent": true + }, + "custom.titleExtra": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 525, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\t property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n\t+if(len({view.custom.titleExtra})\u003e0,\r\n\t\t\" (\" + {view.custom.titleExtra} + \")\",\r\n\t\t\"\"\r\n\t),\r\n\t\"No Statistics\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttable \u003d self.getSibling(\"Table\")\n\tlines \u003d self.getSibling(\"LineChart\")\n\tbars \u003d self.getSibling(\"BarChart\")\n\tdropdown \u003d self.getSibling(\"Dropdown\")\n\ttabContainer \u003d self.getSibling(\"TabContainer\")\n\ttabData \u003d self.view.custom.tabData[tabContainer.props.currentTabIndex]\n\t# Create title:\n\ttitle \u003d tabData.title\n\tif len(dropdown.props.options) \u003e 0:\n\t\ttitle \u003d dropdown.props.value + \" \" + title\n\t# Force CSV download:\n\tutils.downloadCSV(table, title)\n\tif lines.meta.visible:\n\t\tutils.downloadCSV(lines.props.series[0].data, title + \" Chart\")\n\tif bars.meta.visible:\n\t\tutils.downloadCSV(bars.props.dataSources.example, title + \" Chart\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\t# Reset components:\n\tlines \u003d self.getSibling(\"LineChart\")\n\tlines.meta.visible \u003d False\n\tlines.props.series[0].data \u003d system.dataset.clearDataset(lines.props.series[0].data)\n\tbars \u003d self.getSibling(\"BarChart\")\n\tbars.meta.visible \u003d False\n\tbars.props.dataSources.example \u003d system.dataset.clearDataset(bars.props.dataSources.example)\n\ttable \u003d self.getSibling(\"Table\")\n\ttable.props.data \u003d system.dataset.clearDataset(table.props.data)\n\ttable.props.selection.selectedColumn \u003d None\n\ttable.props.selection.selectedRow \u003d None\n\t#table.props.selection.data \u003d []\n\tself.getSibling(\"Dropdown\").props.value \u003d \"\"\n\t# Now update the current tab data:\n\tif len(self.props.tabs) \u003e 0:\n\t\tself.getSibling(\"Table\").forceRefresh()" + } + }, + "props.tabs": { + "binding": { + "config": { + "path": "view.custom.tabData" + }, + "transforms": [ + { + "code": "\t# Return tab list:\n\treturn [val.title for val in value]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 160 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "events": { + "component": { + "onSelectionChange": { + "config": { + "script": "\tlines \u003d self.getSibling(\"LineChart\")\n\tbars \u003d self.getSibling(\"BarChart\")\n\ttabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\ttabData \u003d self.view.custom.tabData[tabIndex]\n\tif len(event.data) \u003e 0 and \"chartNamedQuery\" in tabData:\n\t\tif tabData[\"isBar\"]:\n\t\t\tlines.meta.visible \u003d False\n\t\t\tbars.meta.visible \u003d True\n\t\t\t# Apply:\n\t\t\tbars.forceRefresh()\n\t\telse:\n\t\t\tbars.meta.visible \u003d False\n\t\t\tlines.meta.visible \u003d True\n\t\t\t# Apply:\n\t\t\tlines.forceRefresh()\n\telse:\n\t\tlines.meta.visible \u003d False\n\t\tbars.meta.visible \u003d False\n\t\tlines.props.series[0].data \u003d system.dataset.clearDataset(lines.props.series[0].data)\n\t\tbars.props.dataSources.example \u003d system.dataset.clearDataset(bars.props.dataSources.example)" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "expression": "{../LineChart.meta.visible} || {../BarChart.meta.visible}" + }, + "transforms": [ + { + "fallback": "calc(100% - 75px)", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "calc(40% - 75px/2)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "gaylord", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Gaylord" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": true, + "sortable": true, + "visible": true + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "cycles_count", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Cycles (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": true, + "sortable": true, + "visible": true + } + ], + "data": { + "$": [ + "ds", + 192, + 1637031280591 + ], + "$columns": [ + { + "data": [], + "name": "start_timestamp", + "type": "Date" + }, + { + "data": [], + "name": "end_timestamp", + "type": "Date" + }, + { + "data": [], + "name": "gaylord", + "type": "String" + }, + { + "data": [], + "name": "cycles_count", + "type": "Double" + }, + { + "data": [], + "name": "cycles_cph", + "type": "Double" + }, + { + "data": [], + "name": "cycles_percent", + "type": "Double" + } + ] + }, + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\t# Collect data:\n\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\tstartDate \u003d self.session.custom.timewidget.startDate\n\tendDate \u003d self.session.custom.timewidget.endDate\n\tid \u003d self.getSibling(\"Dropdown\").props.value\n\t\n\t# Apply:\n\t#system.perspective.print(\"Table Check: \" + tabData.title)\n\tif (tabData.uniqueNamedQuery \u003d\u003d \"\" or id \u003c\u003e \"\"):\n\t\t#system.perspective.print(\"Table Refresh: \" + tabData.title)\n\t\tparams \u003d {\n\t\t\t\"startDate\": startDate,\n\t\t\t\"endDate\": endDate\n\t\t}\n\t\tif id \u003c\u003e \"\":\n\t\t\tparams[tabData.idField] \u003d id\n\t\tdata \u003d system.db.runNamedQuery(tabData.dataNamedQuery, params)\n\t\t# Create title:\n\t\tcou \u003d utils.getRowCount(data)\n\t\tast \u003d \"*\" if cou \u003e\u003d 1000 else \"\"\n\t\tself.view.custom.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t\t# Update columns:\n\t\tcolumns \u003d []\n\t\tfilterColumns \u003d self.getSibling(\"Mode\").props.value\n\t\tfor name in data.getColumnNames():\n\t\t\tif name.split(\"_\")[-1] not in filterColumns:\n\t\t\t\textra \u003d {}\n\t\t\t\tif name in [\"start_timestamp\", \"end_timestamp\"]:\n\t\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\t\textra[\"width\"] \u003d 150\n\t\t\t\telif name in [\"induct\", \"scanner\", \"sorter\", \"lane\"]:\n\t\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\t\textra[\"width\"] \u003d 80\n\t\t\t\tcolumns.append(reports.generateColumn(name, extra))\n\t\tself.props.columns \u003d columns\n\t\t# Return data\n\t\tself.props.data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Dropdown", + "visible": null + }, + "position": { + "height": 36, + "width": 200, + "x": "calc(100% - 205px)", + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../TabContainer.props.currentTabIndex}" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\treturn tabData.uniqueNamedQuery not in [None, \"\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "props.options": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\tquery \u003d tabData.uniqueNamedQuery\n\tif query not in [None, \"\"]:\n\t\tdata \u003d system.db.runNamedQuery(query)\n\t\tvalues \u003d [data.getValueAt(row, 0) for row in range(data.getRowCount())]\n\t\toptions \u003d []\n\t\tfor val in values:\n\t\t\toptions.append({\n\t\t\t\t\"value\": val,\n\t\t\t\t\"label\": val\n\t\t\t})\n\t\t# Select the first one if no value is selected:\n\t\tif self.props.value not in values and len(values) \u003e 0:\n\t\t\tself.props.value \u003d values[0]\n\t\t# Return list:\n\t\treturn options\n\telse:\n\t\tself.props.value \u003d \"\"\n\t\treturn []", + "type": "script" + } + ], + "type": "property" + } + }, + "props.value": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value \u003c\u003e \"\":\n\t\t# Apply\n\t\tself.getSibling(\"Table\").forceRefresh()\n\t\ttabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\tif self.view.custom.tabData[tabIndex][\"isBar\"]:\n\t\t\tself.getSibling(\"BarChart\").forceRefresh()\n\t\telse:\n\t\t\tself.getSibling(\"LineChart\").forceRefresh()" + } + } + }, + "type": "ia.input.dropdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfilterColumns \u003d self.props.value\n\t# Update columns:\n\ttable \u003d self.getSibling(\"Table\")\n\tcolumns \u003d []\n\tfor name in table.props.data.getColumnNames():\n\t\tif name.split(\"_\")[-1] not in filterColumns:\n\t\t\textra \u003d {}\n\t\t\tif name in [\"start_timestamp\", \"end_timestamp\"]:\n\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\textra[\"width\"] \u003d 150\n\t\t\telif name in [\"induct\", \"scanner\", \"sorter\", \"lane\"]:\n\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\textra[\"width\"] \u003d 80\n\t\t\tcolumns.append(reports.generateColumn(name, extra))\n\ttable.props.columns \u003d columns\n\t# Update columns:\n\tlines \u003d self.getSibling(\"LineChart\")\n\tdata \u003d lines.props.series[0].data\n\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\tlines.props.plots[0].trends[0].columns \u003d columns\n\t# Update columns:\n\tbars \u003d self.getSibling(\"BarChart\")\n\tdata \u003d bars.props.dataSources.example\n\tcolumns \u003d []\n\tfor name in data.getColumnNames():\n\t\tif name.split(\"_\")[-1] not in filterColumns and name not in [\"time\", \"hour\"]:\n\t\t\textra \u003d {\n\t\t\t\t\"xAxis\": \"hour\",\n\t\t\t\t\"yAxis\": \"count\",\n\t\t\t\t\"render\": \"column\"\n\t\t\t}\n\t\t\tseries \u003d reports.generateSeries(name, extra)\n\t\t\tseries[\"data\"][\"source\"] \u003d \"example\"\n\t\t\tseries[\"data\"][\"x\"] \u003d \"hour\"\n\t\t\tseries[\"column\"][\"appearance\"][\"stacked\"] \u003d True\n\t\t\tcolumns.append(series)\n\tbars.props.series \u003d columns" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Count", + "value": [ + "pph", + "cph", + "percent" + ] + }, + { + "label": "Percent", + "value": [ + "count", + "pph", + "cph" + ] + }, + { + "label": "Rate", + "value": [ + "count", + "percent" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "pph", + "cph", + "percent" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 355px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Aggregate Mode:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DropdownLabel", + "visible": null + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 330px)", + "y": 88 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../TabContainer.props.currentTabIndex}" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\treturn tabData.uniqueNamedQuery not in [None, \"\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\tvalue \u003d tabData.uniqueNamedQuery\n\tif value not in [None, \"\"]:\n\t\treturn tabData.idField.title() + \":\"\n\telse:\n\t\treturn \"\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "color": "#000", + "fontSize": "14px", + "textAlign": "right" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LineChart", + "visible": false + }, + "position": { + "height": "calc(60% - 75px/2)", + "width": "100%" + }, + "propConfig": { + "position.y": { + "binding": { + "config": { + "expression": "if({this.meta.visible},\r\n\t\"calc(40% + 75px/2)\",\r\n\t\"200%\"\r\n)" + }, + "type": "expr" + } + }, + "props.xTrace.infoBox.dataFormat": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"0.##%\"\n\telse:\n\t\treturn \"0,0.##\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "defaultStyles": { + "colorScheme": "Spectral", + "normal": { + "stroke": { + "width": 2 + } + } + }, + "legend": { + "position": "right", + "visible": true + }, + "plots": [ + { + "axes": [], + "markers": [], + "trends": [ + { + "axis": "", + "baselines": [], + "breakLine": false, + "columns": [ + { + "key": "time" + }, + { + "key": "total_count" + }, + { + "key": "single_carrier_count" + }, + { + "key": "double_carrier_count" + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Boiler", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ], + "series": [ + { + "data": { + "$": [ + "ds", + 192, + 1636690363196 + ], + "$columns": [ + { + "data": [], + "name": "time", + "type": "Date" + }, + { + "data": [], + "name": "total_count", + "type": "Integer" + }, + { + "data": [], + "name": "single_carrier_count", + "type": "Integer" + }, + { + "data": [], + "name": "double_carrier_count", + "type": "Integer" + }, + { + "data": [], + "name": "total_pph", + "type": "Double" + }, + { + "data": [], + "name": "single_carrier_pph", + "type": "Double" + }, + { + "data": [], + "name": "double_carrier_pph", + "type": "Double" + }, + { + "data": [], + "name": "single_carrier/sorter_percent", + "type": "Double" + }, + { + "data": [], + "name": "double_carrier/sorter_percent", + "type": "Double" + } + ] + }, + "name": "Boiler" + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "timeRange": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm:ss" + }, + "xTrace": { + "infoBox": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm", + "width": 200 + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tselected \u003d self.getSibling(\"Table\").props.selection.data\n\t\tidField \u003d tabData[\"idField\"]\n\t\tid \u003d selected[0][idField]\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif not tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Add breaks:\n\t\t\tbreaks \u003d []\n\t\t\tfor row in range(data.getRowCount()-1):\n\t\t\t\tcurTime \u003d system.date.parse(data.getValueAt(row, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tnextTime \u003d system.date.parse(data.getValueAt(row+1, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tminBetween \u003d system.date.minutesBetween(curTime, nextTime)\n\t\t\t\tif minBetween \u003e 1:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(curTime, 1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\t\tif minBetween \u003e 2:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(nextTime, -1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\tdata \u003d system.dataset.addRows(data, breaks)\n\t\t\tdata \u003d system.dataset.sort(data, \"time\", True)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\t\t\tself.props.plots[0].trends[0].columns \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.series[0].data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.timeseries" + }, + { + "meta": { + "name": "BarChart", + "visible": false + }, + "position": { + "height": "calc(60% - 75px/2)", + "width": "100%", + "y": "calc(40% + 75px/2)" + }, + "propConfig": { + "props.yAxes[0].label.text": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"Percent\"\n\telif \"pph\" not in value:\n\t\treturn \"PPH\"\n\telse:\n\t\treturn \"Count\"", + "type": "script" + } + ], + "type": "property" + } + }, + "props.yAxes[0].value.format": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"###.##%\"\n\telse:\n\t\treturn \"#,###.##\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "dataSources": { + "example": { + "$": [ + "ds", + 192, + 1636690363197 + ], + "$columns": [ + { + "data": [], + "name": "time", + "type": "String" + }, + { + "data": [], + "name": "hour", + "type": "String" + }, + { + "data": [], + "name": "diverted", + "type": "Double" + }, + { + "data": [], + "name": "lane_disabled", + "type": "Double" + }, + { + "data": [], + "name": "lane_full", + "type": "Double" + }, + { + "data": [], + "name": "lane_jam", + "type": "Double" + } + ] + } + }, + "series": [ + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "diverted" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Diverted" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "diverted", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_disabled" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Disabled" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_disabled", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_full" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Full" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_full", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_jam" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Jam" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_jam", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "xAxes": [ + { + "appearance": { + "font": { + "size": "", + "weight": 500 + }, + "grid": { + "color": "", + "dashArray": "", + "minDistance": 60, + "opacity": 1, + "position": 0.5 + }, + "inside": false, + "labels": { + "color": "", + "opacity": 1, + "rotation": 0, + "wrap": true + }, + "opposite": false + }, + "category": { + "break": { + "enabled": false, + "endCategory": "", + "size": 0.05, + "startCategory": "" + } + }, + "date": { + "baseInterval": { + "count": 1, + "enabled": false, + "skipEmptyPeriods": false, + "timeUnit": "hour" + }, + "break": { + "enabled": false, + "endDate": "", + "size": 0.05, + "startDate": "" + }, + "format": "kk", + "inputFormat": "yyyy-MM-dd kk:mm:ss", + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "inversed": false, + "label": { + "color": "", + "enabled": true, + "text": "Hour" + }, + "name": "hour", + "render": "category", + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "" + }, + "value": { + "break": { + "enabled": false, + "endValue": 100, + "size": 0.05, + "startValue": 0 + }, + "format": "#,###.##", + "logarithmic": false, + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "visible": true + } + ], + "yAxes": [ + { + "appearance": { + "font": { + "size": "", + "weight": 500 + }, + "grid": { + "color": "", + "dashArray": "", + "minDistance": null, + "opacity": 1, + "position": 0.5 + }, + "inside": false, + "labels": { + "color": "", + "opacity": 1, + "rotation": 0, + "wrap": true + }, + "opposite": false + }, + "category": { + "break": { + "enabled": false, + "endCategory": "", + "size": 0.05, + "startCategory": "" + } + }, + "date": { + "baseInterval": { + "count": 1, + "enabled": false, + "skipEmptyPeriods": false, + "timeUnit": "hour" + }, + "break": { + "enabled": false, + "endDate": "", + "size": 0.05, + "startDate": "" + }, + "format": "M/d/yyyy HH:mm:ss", + "inputFormat": "yyyy-MM-dd kk:mm:ss", + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "inversed": false, + "label": { + "color": "", + "enabled": true + }, + "name": "count", + "render": "value", + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "" + }, + "value": { + "break": { + "enabled": false, + "endValue": 100, + "size": 0.05, + "startValue": 0 + }, + "logarithmic": false, + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "visible": true + } + ] + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tidField \u003d tabData.idField\n\t\tid \u003d self.getSibling(\"Dropdown\").props.value\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif id \u003c\u003e \"\" and tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d []\n\t\t\tfor name in data.getColumnNames():\n\t\t\t\tif name.split(\"_\")[-1] not in filterColumns and name not in [\"time\", \"hour\"]:\n\t\t\t\t\textra \u003d {\n\t\t\t\t\t\t\"xAxis\": \"hour\",\n\t\t\t\t\t\t\"yAxis\": \"count\",\n\t\t\t\t\t\t\"render\": \"column\"\n\t\t\t\t\t}\n\t\t\t\t\tseries \u003d reports.generateSeries(name, extra)\n\t\t\t\t\tseries[\"data\"][\"source\"] \u003d \"example\"\n\t\t\t\t\tseries[\"data\"][\"x\"] \u003d \"hour\"\n\t\t\t\t\tseries[\"column\"][\"appearance\"][\"stacked\"] \u003d True\n\t\t\t\t\tcolumns.append(series)\n\t\t\tself.props.series \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.dataSources.example \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.xy" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d b/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d new file mode 100644 index 00000000..a5d68c59 --- /dev/null +++ b/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb b/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb new file mode 100644 index 00000000..6001e9e4 --- /dev/null +++ b/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb @@ -0,0 +1,156 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in FMS in recording Flow Management data +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import json +import system +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("FMS Handler") + +# For inserting data into database: +INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def extractNibble(val, nibble): + if val is not None: + return (val >> (nibble*4)) & 0x0F + +def logTime(title, conv, seg, data, start_time): + millisec = round((time.time() - start_time) * 1000, 1) + LOG.info("%s[CONV=%s][SEG=%s][DATA=%s] took %sms to process" % (title, conv, seg, data, millisec)) + +####################################################### +####################################################### +####################################################### +#### Tag Event Handling +####################################################### + +def logSegment(conveyor, segment, data): + # Log event in SQL: + # Insert into FMS History: + start_time = time.time() + INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)" + system.db.runPrepUpdate(INSERT_QUERY, [conveyor, segment, data]) + #logTime("FMS[DB_INSERT]", conveyor, segment, data, start_time) + +def dintOnChange(tag, tagPath, previousValue, currentValue, initialChange, missedEvents): + # Don't execute on startup, or if new value is bad quality: + if currentValue.quality.isGood(): + # Only consider it a change if the value is different: + if currentValue.value <> previousValue.value: + id = int(tagPath.split("/")[-1].replace("DINT", "")) + conveyor = tag['parameters']['LabelFull'] + # ID=0 is unique where the first nibble is the average of all segments, the 7 other segments are normal segments: + if id == 0: + # Ignore first nibble, which is the average of all segments: + for i in range(1, 8): + # Check if segment changed: + curVal = extractNibble(currentValue.value, i) + prevVal = extractNibble(previousValue.value, i) + if curVal <> prevVal: + segment = i - 1 + logSegment(conveyor, segment, curVal) + else: + for i in range(0, 8): + # Check if segment changed: + curVal = extractNibble(currentValue.value, i) + prevVal = extractNibble(previousValue.value, i) + if curVal <> prevVal: + segment = i + (id-1)*8 + 7 + logSegment(conveyor, segment, curVal) + +####################################################### +####################################################### +####################################################### +#### Graphics Tag Scripts +####################################################### + +""" +radial-gradient(circle at 30%, + #f5bff5 calc((var(--conv-width) - 4px)/2*0.25), + #000 calc((var(--conv-width) - 4px)/2*0.25), + #000 calc((var(--conv-width) - 4px)/2*0.25 + 1px), + transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)), +radial-gradient(circle at 50%, #d900d9 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1 + 1px), transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)), radial-gradient(circle at 70%, #ec7fec 7px, #000 7px, #000 8px, transparent 8px), radial-gradient(circle at 90%, #e23fe2 10px, #000 10px, #000 11px, transparent 11px), #00D900 +""" + + +def genSegmentsTable(obj): + segments = [] + if obj is not None and obj["Count"] is not None: + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + percent = extractNibble(obj[dint], i % 8) / 15.0 + segments.append([i, percent]) + return system.dataset.toDataSet(["segment", "fill"], segments) + +def genSegmentColor(data): + perc = (data/15.0) + c1 = 255 - (255 - 217)*perc + c2 = 255 - (255 - 0)*perc + return "rgb(%s, %s, %s)" % (c1, c2, c1) + +def genSegmentsPattern(obj): + if obj["Count"] is not None and obj["Count"] > 0: + percUnit = 100 / float(obj["Count"]) + gradients = [] + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + color = genSegmentColor(data) + circlePos = ((obj["Count"]-i))*percUnit + percUnit/2.0 + perc = (data/15.0*0.5+0.5) if data > 0 else 0.0 # Make circle size between 50%-100% + if perc > 0.0: + output = "radial-gradient(circle at %s%%" % (circlePos) + output += ", %s calc((var(--conv-width) - 8px)/2*%s)" % (color, perc) + output += ", #000 calc((var(--conv-width) - 8px)/2*%s)" % (perc) + output += ", #000 calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc) + output += ", transparent calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc) + output += ")" + gradients.append(output) + if len(gradients) > 0: + return ", ".join(gradients)+"," + return "" + +def genSegmentsTooltip(obj): + if obj["Count"] is not None and obj["Count"] > 0: + data = extractNibble(obj["DINT0"], 0) + output = "

SegmentAVG: %s%%" % (int(round(100 * data / 15.0))) + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + output += "
Segment%s: %s%%" % (i, int(round(100 * data / 15.0))) + return output + return "" + +def genSegmentHeatmap(obj): + segments = [] + if obj["Count"] is not None and obj["Count"] > 0: + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + color = 255 * data / 15 + segments.append("rgb(255, %s, %s)" % (color, color)) + return json.dumps(segments) \ No newline at end of file diff --git a/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 b/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 new file mode 100644 index 00000000..c9af6be8 --- /dev/null +++ b/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "SCAN" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#AAA", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Scanner" + }, + "position": { + "height": 27, + "rotate": { + "angle": "90deg" + }, + "width": 54, + "x": 72, + "y": 21.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 b/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 new file mode 100644 index 00000000..32ee0e76 --- /dev/null +++ b/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 @@ -0,0 +1,9 @@ +{ + "isIdleTimeoutEnabled": true, + "idleMinutes": 240, + "gracePeriod": 300, + "gracePeriodMessage": "You will be logged out due to inactivity in {seconds} seconds", + "timeoutAction": "UserLogout", + "logoutUrl": "", + "isCustomLogout": false +} \ No newline at end of file diff --git a/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c b/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c new file mode 100644 index 00000000..01f19e3c --- /dev/null +++ b/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c @@ -0,0 +1,106 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + success AS success_pph, + unknown AS unknown_pph, + unexpected AS unexpected_pph, + track_err AS track_err_pph, + gap_err AS gap_err_pph, + dest_full AS dest_full_pph, + dest_fault AS dest_fault_pph, + dest_invalid AS dest_invalid_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + dest_disabled AS dest_disabled_pph, + rate_high AS rate_high_pph, + div_fail AS div_fail_pph, + dest_none AS dest_none_pph, + lost AS lost_pph, + dim_err AS dim_err_pph, + weight_err AS weight_err_pph, + underutilized AS underutilized_pph, + unsafe AS unsafe_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba b/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba new file mode 100644 index 00000000..db15bce3 --- /dev/null +++ b/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba @@ -0,0 +1,156 @@ +{ + "custom": {}, + "params": { + "tagPath": "" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 29, + "width": 27 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Estop" + }, + "position": { + "height": 20, + "width": 20, + "x": 1, + "y": 8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/EPC/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 16, + "width": 16, + "x": 10, + "y": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"showAlways\") || {session.custom.dexmanager.show.Estops}", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"color\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "path": "material/lock" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 16, + "width": 16, + "x": 10, + "y": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Icon.meta.visible" + }, + "type": "property" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"tooltip\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be b/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be new file mode 100644 index 00000000..4499f90e --- /dev/null +++ b/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be @@ -0,0 +1,178 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "overview" + }, + "position": { + "height": 1080, + "width": 1920 + }, + "props": { + "fit": { + "mode": "fill" + }, + "source": "/system/images/overview.svg" + }, + "type": "ia.display.image" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm01" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 36, + "width": 124, + "x": 278, + "y": 626 + }, + "props": { + "primary": false, + "text": "MCM01 - FLUID INBOUND" + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm02" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "height": 36, + "width": 124, + "x": 1052, + "y": 726 + }, + "props": { + "primary": false, + "text": "MCM02 - NC SORTER" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 40, + "width": 40, + "x": 8, + "y": 368 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 40, + "width": 40, + "x": 486, + "y": 432 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_1" + }, + "position": { + "height": 40, + "width": 40, + "x": 759, + "y": 613 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_2" + }, + "position": { + "height": 40, + "width": 40, + "x": 940, + "y": 408 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_3" + }, + "position": { + "height": 40, + "width": 40, + "x": 1863, + "y": 624 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 b/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 new file mode 100644 index 00000000..0c7fb436 --- /dev/null +++ b/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 @@ -0,0 +1,395 @@ +{ + "custom": { + "hasControls": null, + "isRunning": false + }, + "params": { + "label": "System", + "tagPath": "[default]SystemStatus", + "tagPaths": [], + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "custom.hasControls": { + "binding": { + "config": { + "expression": "// Force refresh:\r\nif(now(1000)\u003dnow(1000),\r\n\t{view.params.tagPaths},\r\n\t{view.params.tagPaths}\r\n)" + }, + "transforms": [ + { + "code": "\ttags \u003d [tagPath + \"/SetStart.Quality\" for tagPath in value] + [tagPath + \"/SetStop.Quality\" for tagPath in value]\n\tqualities \u003d [v.getQuality() for v in system.tag.readBlocking(tags)]\n\tqualities \u003d [v \u003d\u003d v.Good for v in qualities]\n\treturn any(qualities) and len(qualities) \u003e 0", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.isRunning": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/bStarted" + }, + "type": "tag" + }, + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[3]": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 125 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "if({view.params.label} \u003d None || {view.params.label} \u003d \"\",\r\n\t{value},\r\n\t{view.params.label}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontFamily": "var(--font-NotoSans)", + "fontSize": "12px", + "fontWeight": "bold", + "paddingLeft": "5px", + "textTransform": "uppercase", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "//\"System\u003cbr\u003eStatus: \"+if({view.custom.hasControls}, if({view.custom.isRunning}, \"Running\", \"Stopped\"), \"Unknown\")\r\njsonGet({value}, \"tooltip\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStart\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 60px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.hasControls" + }, + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.isRunning" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#32CD32" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â–º", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStop\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 32.5px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.hasControls" + }, + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.isRunning" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â– ", + "textStyle": { + "fontFamily": "monospace", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 b/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 new file mode 100644 index 00000000..497a3612 --- /dev/null +++ b/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 @@ -0,0 +1,1001 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 60, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onDexClick": { + "config": { + "script": "\twindow \u003d \"Popups/DeviceWrapper\"\n\tparams \u003d {\n\t\t\"deviceType\": event.type.split(\".\")[-1],\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\t# Change device type if available:\n\ttry:\n\t\ttagPath \u003d \"[default]\"+params[\"props\"].status.tagPath+\"/Parameters.DeviceType\"\n\t\tvalue \u003d system.tag.readBlocking([tagPath])[0]\n\t\tif value.quality.isGood():\n\t\t\tparams[\"deviceType\"] \u003d value.value\n\texcept:\n\t\tpass\n\t# Open window, if one is specified:\n\tid \u003d event.props.status.tagPath\n\ttitle \u003d utils.extractName(event.props.status)\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\telse:\n\t\tsystem.perspective.openPopup(id, window, params, title, resizable\u003dTrue)" + }, + "scope": "G", + "type": "script" + }, + "onDexComponentClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"type\": event.type,\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\tsystem.perspective.openPopup(event.meta.name, \"Windows/Popup/Conveyor\", params)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "DexManager" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.config": { + "binding": { + "config": { + "path": "session.custom.dexmanager.config" + }, + "type": "property" + } + }, + "props.highlight": { + "binding": { + "config": { + "path": "session.custom.dexmanager.highlight" + }, + "enabled": false, + "type": "property" + } + }, + "props.override": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.data},\r\n\t0\r\n)" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d 0:\n\t\treturn {}\n\telse:\n\t\tdata \u003d value\n\t\taggregate \u003d {}\n\t\taggregate_conv \u003d {}\n\t\tmaxCount \u003d 0\n\t\t# Perform aggregates:\n\t\tfor r in range(data.getRowCount()):\n\t\t\tdevice \u003d data.getValueAt(r, \"device\")\n\t\t\tcount \u003d data.getValueAt(r, \"count\")\n\t\t\t# Add count to device:\n\t\t\taggregate[device] \u003d aggregate[device] + count if device in aggregate else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate[device] if aggregate[device] \u003e maxCount else maxCount\n\t\t\t# Retrieve conveyor name:\n\t\t\tconv \u003d device.split(\".\")[0]\n\t\t\t# Add count to conveyor:\n\t\t\taggregate_conv[conv] \u003d aggregate_conv[conv] + count if conv in aggregate_conv else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate_conv[conv] if aggregate_conv[conv] \u003e maxCount else maxCount\n\t\t# Convert to overrides:\n\t\tresult \u003d {}\n\t\tfor k, v in aggregate.items():\n\t\t\tresult[k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\tfor k, v in aggregate_conv.items():\n\t\t\tresult[\"conveyor_\"+k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\treturn result", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.overrideAll.config.enableHighlight": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "enabled": false, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.config.isClickable": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.color": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.tooltip": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.show": { + "binding": { + "config": { + "struct": { + "heatmapDevices": "{session.custom.heatmapSettings.devices}", + "heatmapEnabled": "{session.custom.heatmapSettings.enabled}", + "show": "{session.custom.dexmanager.show}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnabled:\n\t\tdevices \u003d [v.value for v in value.heatmapDevices]\n\t\treturn {\n\t\t\t\"Beacons\": \"Beacons\" in devices,\n\t\t\t\"ConveyorLabels\": True,\n\t\t\t\"ConveyorPatterns\": False,\n\t\t\t\"Conveyors\": True,\n\t\t\t\"DivertPaddles\": True,\n\t\t\t\"EIPs\": \"EIPs\" in devices,\n\t\t\t\"Encoders\": \"Encoders\" in devices,\n\t\t\t\"Estops\": \"Estops\" in devices,\n\t\t\t\"Gaylords\": True,\n\t\t\t\"LimitSwitches\": \"LimitSwitches\" in devices,\n\t\t\t\"MCPs\": \"MCPs\" in devices,\n\t\t\t\"PhotoEyes\": \"PhotoEyes\" in devices,\n\t\t\t\"PushButtons\": \"PushButtons\" in devices,\n\t\t\t\"Scanners\": \"Scanners\" in devices,\n\t\t\t\"VFDs\": \"VFDs\" in devices\n\t\t}\n\telse:\n\t\treturn value.show#{k: v.value for k, v in value.show.iteritems()}", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "overrideAll": { + "config": { + "enableHighlight": null + }, + "status": {} + } + }, + "type": "dex.controller.manager" + }, + { + "meta": { + "name": "Label_Date" + }, + "position": { + "height": 28, + "width": 90 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Date" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Time" + }, + "position": { + "height": 28, + "width": 90, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Time" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Site" + }, + "position": { + "height": 56, + "width": 90, + "x": 88 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "{[default]Gateway/Parameters.Customer}" + }, + "transforms": [ + { + "code": "\treturn system.project.getProjectName() + \" \" + value", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_IPAddr" + }, + "position": { + "height": 28, + "width": 120, + "x": 176 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "session.props.host" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.user.userName is not None:\n\t\t#system.perspective.print(\"Logout\")\n\t\tsystem.perspective.logout()\n\telse:\n\t\t#system.perspective.print(\"Login\")\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label_User" + }, + "position": { + "height": 28, + "width": 120, + "x": 176, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "coalesce({session.props.auth.user.userName}, \"LOGIN\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText", + "cursor": "pointer" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/help" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Legend" + }, + "position": { + "height": 52, + "width": 100, + "x": 988, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Help" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + }, + { + "config": { + "params": { + "view": "Windows/Graphics/Overview" + }, + "view": "Windows/GraphicsWrapper" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Nav_Overview" + }, + "position": { + "height": 52, + "width": 100, + "x": 356, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Overview" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "action": "Toggle", + "type": "Page" + }, + "scope": "C", + "type": "fullscreen" + } + } + }, + "meta": { + "name": "Nav_ToggleFull" + }, + "position": { + "height": 52, + "width": 100, + "x": 1090, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Fullscreen" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Status" + }, + "position": { + "height": 56, + "width": 60, + "x": 294 + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Status" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusColor" + }, + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "cx": 20, + "cy": 20, + "fill": {}, + "r": 19, + "stroke": { + "paint": "#000", + "width": 2 + }, + "style": {}, + "type": "circle" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 40 40" + }, + "type": "ia.shapes.svg" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_ActiveAlarms" + }, + "position": { + "height": 52, + "width": 100, + "x": 458, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active Alarms" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_HitList" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_History" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 29 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/statistics" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Statistics" + }, + "position": { + "height": 52, + "width": 100, + "x": 662, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Statistics" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/status" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Status" + }, + "position": { + "height": 52, + "width": 100, + "x": 764, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Status" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusTooltip" + }, + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/custom-reports" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_CustomReports" + }, + "position": { + "height": 52, + "width": 100, + "x": 1192, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Custom Reports" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/config" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Config" + }, + "position": { + "height": 52, + "width": 100, + "x": 1294, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Config", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Nav_AlarmHeatmap" + }, + "position": { + "height": 52, + "width": 100, + "x": 1498, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Alarm Heatmap", + "visible": true + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "LabelHeatMap", + "visible": false + }, + "position": { + "height": 56, + "width": 732, + "x": 458 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Heatmap Mode Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LabelFireAlarm", + "visible": false + }, + "position": { + "height": 56, + "width": 178 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/FireAlarm" + }, + "type": "tag" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({[default]Gateway/FireAlarm},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Building Fire Alarm" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/commission" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Commission" + }, + "position": { + "height": 52, + "width": 100, + "x": 1396, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Commission", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/cameras" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_JamCameras" + }, + "position": { + "height": 52, + "width": 100, + "x": 866, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Jam Cameras" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-bottom": "2px solid #000", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 b/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 new file mode 100644 index 00000000..e5b93432 --- /dev/null +++ b/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#00CC00" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c b/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c new file mode 100644 index 00000000..e8c78e85 --- /dev/null +++ b/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RobinLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"RS%CH\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Robin Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 b/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 new file mode 100644 index 00000000..1d9eb861 --- /dev/null +++ b/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 @@ -0,0 +1,112 @@ +import re +import system + +reDefault = re.compile(r'\[[^[]+\]') + +def _extractParameter(params, parameter, path): + val = params[parameter].value + if hasattr(val, "bindType"): + return system.tag.readBlocking([path+"/Parameters."+parameter])[0].value + else: + return val + +def _isGroupedUDT(obj): + for tag in obj["tags"]: + if tag["name"] in ["Graphics", "StatusText"]: + return False + return True + +def getSiblingDevices(tagPath, filterType=None, filterTagPath=True): + devices = [] + + def extractStatusText(obj, path): + # Scan for status text tag: + for tag in obj["tags"]: + if tag["name"] == "StatusText": + return "[ignition]" + reDefault.sub("", path) + "/StatusText" + # Couldn't find it, so return None: + return None + + def scan(obj, parentPath): + if isinstance(obj, list): + for tag in obj: + scan(tag, parentPath) + else: + path = parentPath + "/" + obj["name"] + if str(obj["tagType"]) == "Folder" or (str(obj["tagType"]) == "UdtInstance" and (tagPath <> path or not filterTagPath) and _isGroupedUDT(obj)): + for tag in obj["tags"]: + scan(tag, path) + elif str(obj["tagType"]) == "UdtInstance" and (tagPath <> path or not filterTagPath): + params = obj["parameters"] + # Make sure this is a renderable device: + if "DeviceType" in params: + deviceType = _extractParameter(params, "DeviceType", path) + if filterType == None or deviceType in filterType: + labelFull = _extractParameter(params, "LabelFull", path) + devices.append({ + "deviceType": deviceType, + "tagPath": path, + "device": labelFull,#"[ignition]" + reDefault.sub("", path) + "/Parameters.LabelFull", + "status": extractStatusText(obj, path) + }) + + # Scan devices: + if tagPath not in [None, ""]: + tagPath = reDefault.sub("", tagPath) # Remove [default] from tagpath + parentPath = "/".join(tagPath.split("/")[:-1]) + config = system.tag.getConfiguration(parentPath, True) + #system.perspective.print(parentPath) + #system.perspective.print(config) + if len(config) > 0 and "tags" in config[0]: + scan(config[0]["tags"], parentPath) + devices.sort(key=lambda x: x["device"]) + + return devices + +def _isTagOPC(path): + try: + return system.tag.readBlocking([path+".ValueSource"])[0].value == "opc" + except: + return False + +def _isTagEnabled(path): + try: + return system.tag.readBlocking([path+".Enabled"])[0].value + except: + return False + +def getOPCTags(tagPath): + tags = [] + + def scan(obj, parentPath, relPath=""): + if isinstance(obj, list): + for tag in obj: + scan(tag, parentPath, relPath) + elif "name" in obj: + path = parentPath + "/" + obj["name"] + if "tags" in obj: + # Scan deeper: + relPath = relPath + obj["name"] + "/" + for tag in obj["tags"]: + scan(tag, path, relPath) + else: + if _isTagEnabled(path) and _isTagOPC(path):#and obj["name"] not in ["Graphics"]: + # Found an OPC tag: + tags.append({ + "tagName": relPath + obj["name"], + "tagType": "opc", + "tagPath": "[ignition]" + path + ".OpcItemPath", + "tagValue": "[ignition]" + path, + "tagTooltip": "[ignition]" + path + ".Tooltip", + "tagDocumentation": "[ignition]" + path + ".Documentation" + }) + + # Scan devices: + if tagPath not in [None, ""]: + tagPath = reDefault.sub("", tagPath) # Remove [default] from tagpath + config = system.tag.getConfiguration(tagPath, True) + if len(config) > 0 and "tags" in config[0]: + scan(config[0]["tags"], tagPath) + tags.sort(key=lambda x: x["tagName"]) + + return tags \ No newline at end of file diff --git a/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b b/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b new file mode 100644 index 00000000..40a10ef1 --- /dev/null +++ b/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b @@ -0,0 +1,297 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "BCN1_BLU" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#AAA", + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "path": "view.params.meta.name" + }, + "type": "property" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 b/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 new file mode 100644 index 00000000..0abcff0a --- /dev/null +++ b/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 @@ -0,0 +1,16 @@ +DEVICE_WINDOW = "Popups/DeviceWrapper" + +def openDevice(params, title, isMobile=False): + params["tabs"] = ["Status"] + # Add alarm history tab: + if params["deviceType"] not in ["beacon"]: + params["tabs"].append("Alarm History") + # Add devices tab: + if params["deviceType"] in ["conveyor", "conveyorcurve", "gaylord", "mcp"]: + params["tabs"].append("Devices") + # Open window, if one is specified: + id = params["props"]["status"]["tagPath"] + if isMobile: + system.perspective.navigate(view=DEVICE_WINDOW, params=params) + else: + system.perspective.openPopup(id, DEVICE_WINDOW, params, title, resizable=True) \ No newline at end of file diff --git a/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e b/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e new file mode 100644 index 00000000..621a5925 --- /dev/null +++ b/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e @@ -0,0 +1,403 @@ +{ + "custom": {}, + "params": { + "deviceType": "beacon", + "meta": { + "name": "" + }, + "props": { + "config": { + "alwaysShowAll": true, + "enableHighlight": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false, + "originSide": "left", + "paddleThickness": 10, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isExtended": true, + "isManual": false, + "isRetracted": false, + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + }, + "tabs": [ + "Status", + "Alarm History", + "Devices", + "Controls" + ] + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.originSide": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.paddleThickness": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.type": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.background": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isExtended": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isFaulted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isManual": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isRetracted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.tooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs": { + "paramDirection": "inout", + "persistent": true + }, + "params.tabs[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[3]": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 569 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 35, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.deviceType" + }, + "transforms": [ + { + "code": "\t# Handle special cases\n\tif(value \u003d\u003d \"eip\"):\n\t\tvalue \u003d \"Ethernet IP (EIP)\"\n\telif(value \u003d\u003d \"mcp\"):\n\t\tvalue \u003d \"Main Control Panel (MCP)\"\n\telif(value \u003d\u003d \"divertpaddle\"):\n\t\tvalue \u003d \"Divert Paddle\"\n\telif(value \u003d\u003d \"limitswitch\"):\n\t\tvalue \u003d \"Limit Switch\"\n\telif(value \u003d\u003d \"photoeye\"):\n\t\tvalue \u003d \"Photo Eye\"\n\telif(value \u003d\u003d \"pushbutton\"):\n\t\tvalue \u003d \"Push Button\"\n\telif(value.startswith(\"vfd\")):\n\t\tvalue \u003d \"Variable Frequency Drive (VFD)\"\n\telif(value \u003d\u003d \"chutedestination\"):\n\t\tvalue \u003d \"Chute Destination\"\n\telif(value \u003d\u003d \"hss_chute\"):\n\t\tvalue \u003d \"Chute Destination\"\n\telif(value \u003d\u003d \"spiralchute\"):\n\t\tvalue \u003d \"Spiral Chute\"\n\telif(value \u003d\u003d \"divchute\"):\n\t\tvalue \u003d \"Divert Chute\"\n\telif(value \u003d\u003d \"rrchute\"):\n\t\tvalue \u003d \"Round Robin Chute\"\n\telse:\n\t\t# Do proper caps for anything else\n\t\tvalue \u003d value.title()\n\treturn value", + "type": "script" + }, + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 35px)", + "width": "100%", + "y": 35 + }, + "propConfig": { + "custom.key": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + }, + "props.tabs": { + "binding": { + "config": { + "struct": { + "deviceType": "{view.params.deviceType}", + "roles": "{session.props.auth.user.roles}", + "tagPath": "try({view.params.props.status.tagPath}, \"\")" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tcontrols \u003d [\"spiralchute\", \"divchute\", \"rrchute\", \"chutedestination\", \"hss_chute\"]\n\tdevices \u003d controls + [\"conveyor\", \"conveyorcurve\", \"gaylord\"]#, \"mcp\"]\n\troles \u003d [\"Administrator\", \"Developer\", \"Maintenance\"]\n\t\n\t# Add base tab:\n\ttabs \u003d [\"Status\" if value.deviceType not in controls else \"Controls\"]\n\t# Add alarm history tab:\n\tif value.deviceType not in [\"beacon\"]:\n\t\ttabs.append(\"Alarm History\")\n\t# Add fms:\n\tif value.tagPath not in [None, \"\"]:\n\t\ttag \u003d system.tag.getConfiguration(self.view.params.props.status.tagPath)[0]\n\t\tif \"typeId\" in tag and tag[\"typeId\"].endswith(\"_FMS\"):\n\t\t\ttabs.append(\"Flow Management\")\n\t# Add devices tab:\n\tif value.deviceType in devices:\n\t\ttabs.append(\"Devices\")\n\t# Add tags tab:\n\tif value.deviceType not in controls and value.roles !\u003d None and len([r for r in value.roles if r in roles]) \u003e 0:\n\t\ttabs.append(\"Tags\")\n\t\n\t# Return tabs:\n\treturn tabs", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "height": 35, + "width": 150 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 69px)", + "width": "100%", + "y": 69 + }, + "propConfig": { + "props.params.deviceType": { + "binding": { + "config": { + "path": "view.params.deviceType" + }, + "type": "property" + } + }, + "props.params.meta": { + "binding": { + "config": { + "path": "view.params.meta" + }, + "type": "property" + } + }, + "props.params.props": { + "binding": { + "config": { + "path": "view.params.props" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "fallback": "\"Popups/Device/Statuses/\" + {view.params.deviceType}", + "inputType": "scalar", + "mappings": [ + { + "input": "Status", + "output": "\"Popups/Device/Statuses/\" + {view.params.deviceType}" + }, + { + "input": "Controls", + "output": "\"Popups/Device/Controls/\" + {view.params.deviceType}" + }, + { + "input": "Alarm History", + "output": "\"Popups/Device/AlarmHistory\"" + }, + { + "input": "Flow Management", + "output": "\"Popups/Device/FlowManagement\"" + }, + { + "input": "Devices", + "output": "\"Popups/Device/Devices\"" + }, + { + "input": "Tags", + "output": "\"Popups/Device/Tags\"" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "type": "ia.display.view" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow \u003d \"Windows/GraphicsWrapper\"\n\tplctag \u003d self.view.params.props.status.tagPath.replace(\"[default]\", \"\").split(\"/\")[0]\n\tplctag \u003d \"[\"+plctag+\"]\"\n\tdevice \u003d utils.extractName(self.view.params.props.status)\n\tscreen \u003d alarms.resolveScreen(device, plctag)\n\tparams \u003d {\"view\": screen}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_GoTo" + }, + "position": { + "height": 25, + "width": 80, + "x": "calc(100% - 85px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Go To" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 25, + "width": 80, + "x": "calc(100% - 170px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 b/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 new file mode 100644 index 00000000..677242c8 --- /dev/null +++ b/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007DFA" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 b/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 new file mode 100644 index 00000000..f568c225 --- /dev/null +++ b/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 @@ -0,0 +1,151 @@ +import csv +import re +import StringIO + +reRemoveZeroes = re.compile(r'([^\d])0+([1-9])') +reStartingDashes = re.compile(r'^([^_]+)_([^_]+)') +reChuteDashes = re.compile(r'_CH') +reExtraDashes = re.compile(r'_(\d+)(?=_)') +reUnderscores = re.compile(r'_') +reName = re.compile(r'^(.+?)(
|$)') +reStatus = re.compile(r'Status: (.+?)(
|$)') + +reCount = re.compile(r'Count$') +rePPH = re.compile(r'Pph$') +reCPH = re.compile(r'Cph$') +rePercent = re.compile(r'Percent$') + +def prettyName(name, hasDots=True): + # Remove zero padding: + name = reRemoveZeroes.sub(r"\1\2", name) + # Change _ to -: + name = reExtraDashes.sub(r"-\1", reChuteDashes.sub("-CH", reStartingDashes.sub(r"\1-\2", name))) + # Fix device names: + name = reUnderscores.sub("." if hasDots else "-", name) + # Return name: + return name + +def prettyTitle(title): + # Convert title: + title = title.replace("_", " ").title() + title = reCount.sub("(#)", title) + title = rePPH.sub("(pph)", title) + title = reCPH.sub("(cph)", title) + title = rePercent.sub("(%)", title) + return title + +def extractName(obj): + # Return status: + try: + return reName.search(obj["tooltip"]).group(1) + except: + return "Unknown" + +def extractStatus(obj): + # Return status: + try: + return reStatus.search(obj["tooltip"]).group(1) + except: + return "Unknown" + +def getRowCount(data): + if hasattr(data, 'getRowCount'): + return data.getRowCount() + else: + return len(data) + +def toCSV(headers, rows): + buf = StringIO.StringIO() + writer = csv.writer(buf, delimiter=',') + writer.writerows([headers] + rows) + return buf.getvalue() + +def datasetFromJson(json, columns=None): + hasStyling = "value" in json[0].keys() + fields = json[0]["value"].keys() if hasStyling else json[0].keys() + titles = fields + if columns <> None: + fields = columns[0] + titles = columns[1] + + # Extract json data into 2D array: + datasetData = [] + for row in json: + rowData = [] + for field in fields: + cell = row["value"][field] if hasStyling else row[field] + if hasattr(cell, 'value'): + rowData.append(cell.value) + else: + rowData.append(cell) + datasetData.append(rowData) + + return toCSV(titles, datasetData) + +def datasetFromDataset(data, columns=None): + fields = system.dataset.getColumnHeaders(data) + titles = fields + if columns <> None: + fields = columns[0] + titles = columns[1] + datasetData = [[data.getValueAt(row, col) for col in fields] for row in range(data.getRowCount())] + + return toCSV(titles, datasetData) + +def datasetFromTable(table): + data = table.props.data + columns = table.props.columns + if len(columns) > 0: + fields = [] + titles = [] + for col in columns: + if "visible" not in col or col.visible: + fields.append(col.field) + if "header" in col and "title" in col.header and col.header.title not in [None,""]: + titles.append(col.header.title) + else: + titles.append(col.field) + if hasattr(data, 'getValueAt'): + return datasetFromDataset(data, [fields, titles]) + else: + return datasetFromJson(data, [fields, titles]) + else: + return datasetFrom(data) + +def datasetFrom(data): + t = str(type(data)) + #system.perspective.print(t) + if "$ArrayWrapper" in t:# == "": + return datasetFromJson(data) + elif "$SafetyWrapper" in t: + return datasetFromTable(data) + else: + return datasetFromDataset(data) + +def datasetToJSON(data): + fields = system.dataset.getColumnHeaders(data) + return [{col:data.getValueAt(row, col) for col in fields} for row in range(data.getRowCount())] + +def downloadCSV(data, title): + csv = datasetFrom(data) + # Generate filename: + title = title.lower().replace(" ", "_") + datetime = system.date.format(system.date.now(), "yyyyMMdd_HHmmss") + filename = title + "_" + datetime + ".csv" + # Download: + system.perspective.download(filename, csv) + +def getScope(): + """gets the scope that the execution is running in and returns a string indication of which scope + + Returns: a string indicating with scope the function is executing in + """ + from com.inductiveautomation.ignition.common.model import ApplicationScope + scope = ApplicationScope.getGlobalScope() + + if ApplicationScope.isGateway(scope): + return 'gateway' + if ApplicationScope.isClient(scope): + return 'client' + if ApplicationScope.isDesigner(scope): + return 'designer' diff --git a/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 b/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 new file mode 100644 index 00000000..66627cd5 --- /dev/null +++ b/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF6000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 b/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 new file mode 100644 index 00000000..9f90ef8b --- /dev/null +++ b/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 @@ -0,0 +1,112 @@ +{ + "custom": {}, + "params": { + "filenames": [] + }, + "propConfig": { + "params.filenames": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 100px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 25 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.filenames" + }, + "transforms": [ + { + "code": "\ttext \u003d \"Are you sure you would like to delete the following documents:\\n\"\n\tfor val in value:\n\t\ttext +\u003d \"\\n* \"+val\n\treturn text", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdocuments.deleteDocuments(self.view.params.filenames)\n\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c b/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c new file mode 100644 index 00000000..8fd1dd38 --- /dev/null +++ b/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c @@ -0,0 +1,130 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +from __future__ import with_statement +import csv +import os +import random +import re +import string +import system +import time +from os import path + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("WCS Sorting Handler") + +# Defaults for function arguments: +PROGRAM_PATH = "" +CARTON_PATH = "WCS_Package" +DEFAULT_DEVICE = "MCP20" +DEFAULT_OPC_SERVER = "Ignition OPC UA Server" + +# Configuration variables: +MAX_CARTONS = 100 # Max possible carton IDs +MAX_BARCODE_SIZE = 82 # Max possible size of full barcode + +# For extracting PLC info: +PACKAGE_DATA = [ + #["Induct_ID", "induct"], # The induct the package was inducted from + #["Scanner_ID", "scanner"], # The scanner the package was scanned from + #["Sorter_ID", "sorter"], # The sorter the package was sorted from + ["BCR_Img_ID", "bcr_imgid"], # Barcode reader, sequence ID + ["BCR_Seq_ID", "bcr_seqid"], # Barcode reader, image ID + ["Length", "pkg_length"], # Package length in units of 1/10". Only populated if available, use 0 if not + ["Width", "pkg_width"], # Package width in units of 1/10". Only populated if available, use 0 if not + ["Height", "pkg_height"], # Package height in units of 1/10". Only populated if available, use 0 if not + ["Carriers", "carriers"], # Num of carriers (trays/shoes) on sorter that the package is occupying. Only populated if available, use 0 if not + ["Gap_Leading", "gap_leading"], # Leading edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value + ["Gap_Trailing", "gap_trailing"], # Trailing edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value + ["S01_Barcode", "s01_barcode"], # The barcode sent in the S01 message + ["S02_Req_Dest_ID", "s02_req_dest"], # The requested destination ID sent in the S02 message + ["S02_Alt_Dest_ID", "s02_alt_dest"], # The alternate destination ID sent in the S02 message + ["S04_PLC_ID", "s04_plc_id"], # Internal PLC number used to track packages and cross reference to the Host ID + ["S04_Host_ID", "s04_host_id"], # The PLC record number sent in the S04 message, (1 - 9999) + ["S04_Req_Dest_ID", "s04_req_dest"], # The requested destination ID sent in the S04 message + ["S04_Act_Dest_ID", "s04_act_dest"], # The actual destination ID sent in the S04 message + ["S04_Sort_Code", "s04_sort_code"], # The reason code sent in the S04 message + ["Req_Dest_Reason", "req_dest_reason"], # See Destination Reason Bit-Map sheet + ["Alt_Dest_Reason", "alt_dest_reason"] # See Destination Reason Bit-Map sheet +] +TIMESTAMP_DATA = [ + ["S01_Timestamp_H", "s01_timestamp"], # The timestamp sent in the S01 message, Upper 32-bits, UTS in microseconds + ["S01_Timestamp_L", "s01_timestamp"], # The timestamp sent in the S01 message, Lower 32-bits, UTS in microseconds + ["S02_Timestamp_H", "s02_timestamp"], # The timestamp sent in the S02 message, Upper 32-bits, UTS in microseconds + ["S02_Timestamp_L", "s02_timestamp"], # The timestamp sent in the S02 message, Lower 32-bits, UTS in microseconds + ["S04_Timestamp_H", "s04_timestamp"], # The timestamp sent in the S04 message, Upper 32-bits, UTS in microseconds + ["S04_Timestamp_L", "s04_timestamp"] # The timestamp sent in the S04 message, Lower 32-bits, UTS in microseconds +] +# Generate array of paths to read: +PACKAGE_PATHS = [v[0] for v in PACKAGE_DATA] +TIMESTAMP_PATHS = [v[0] for v in TIMESTAMP_DATA] +DATA_PATHS = PACKAGE_PATHS + TIMESTAMP_PATHS + +# For inserting data into database: +PACKAGE_COLS = [v[1] for v in PACKAGE_DATA] +PACKAGE_VALS = ["?"]*len(PACKAGE_COLS) +TIMESTAMP_COLS = [TIMESTAMP_DATA[i][1] for i in range(len(TIMESTAMP_DATA)) if TIMESTAMP_DATA[i][1] in (v[1] for v in TIMESTAMP_DATA[:i])] +TIMESTAMP_VALS = ["FROM_UNIXTIME(((?&(POWER(2, 32)-1))*POWER(2, 32)+(?&(POWER(2, 32)-1)))/1000000)"]*len(TIMESTAMP_COLS) +UNIQUE_COLS = ["trackid", "induct", "scanner", "sorter"] + PACKAGE_COLS + TIMESTAMP_COLS +UNIQUE_VALS = ["?"]*4 + PACKAGE_VALS + TIMESTAMP_VALS +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO package_history (" + ",".join(UNIQUE_COLS) + ") VALUES (" + ",".join(UNIQUE_VALS) + ")" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def isNoRead(field): + return field.replace("?","") == "" + +def isMultiRead(field): + return field.replace("#","") == "" + +def isBadRead(field): + return (field == None or isNoRead(field) or isMultiRead(field)) + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + LOG.info("%s[ID=%s] took %sms to process" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processConfirmAsync(trackID, induct, scanner, sorter, program=PROGRAM_PATH, carton=CARTON_PATH, device=DEFAULT_DEVICE, opcServer=DEFAULT_OPC_SERVER): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if trackID > 0 and trackID < MAX_CARTONS: + def processConfirmInner(): + start_time = time.time() + # Setup carton location: + devicePrefix = "[" + device + "]" + program + cartonPrefix = devicePrefix + carton + "[" + str(trackID) + "]" + # Read all carton data directly: + tags = [cartonPrefix + "." + path for path in DATA_PATHS] + values = [trackID, induct, scanner, sorter] + [value.value for value in system.opc.readValues(opcServer, tags)] + logTime("Confirm[PLC_READ]", trackID, time.time() - start_time) + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, values) + logTime("Confirm[DB_INSERT]", trackID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + diff --git a/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 b/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 new file mode 100644 index 00000000..cdd6ca38 --- /dev/null +++ b/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 @@ -0,0 +1,286 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP04/PS03/PS03_36CH" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 115, + "width": 90, + "x": 205, + "y": 165 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + }, + "persistent": false + } + }, + "props": { + "path": "Templates/Areas/DivChute", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 b/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 new file mode 100644 index 00000000..8ea4d2f7 --- /dev/null +++ b/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 @@ -0,0 +1,103 @@ +WITH SORTERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter + ORDER BY sorter +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(success*pph_multiplier) AS success_pph, + ROUND(unknown*pph_multiplier) AS unknown_pph, + ROUND(unexpected*pph_multiplier) AS unexpected_pph, + ROUND(track_err*pph_multiplier) AS track_err_pph, + ROUND(gap_err*pph_multiplier) AS gap_err_pph, + ROUND(dest_full*pph_multiplier) AS dest_full_pph, + ROUND(dest_fault*pph_multiplier) AS dest_fault_pph, + ROUND(dest_invalid*pph_multiplier) AS dest_invalid_pph, + ROUND(no_read*pph_multiplier) AS no_read_pph, + ROUND(no_code*pph_multiplier) AS no_code_pph, + ROUND(multi_label*pph_multiplier) AS multi_label_pph, + ROUND(dest_disabled*pph_multiplier) AS dest_disabled_pph, + ROUND(rate_high*pph_multiplier) AS rate_high_pph, + ROUND(div_fail*pph_multiplier) AS div_fail_pph, + ROUND(dest_none*pph_multiplier) AS dest_none_pph, + ROUND(lost*pph_multiplier) AS lost_pph, + ROUND(dim_err*pph_multiplier) AS dim_err_pph, + ROUND(weight_err*pph_multiplier) AS weight_err_pph, + ROUND(underutilized*pph_multiplier) AS underutilized_pph, + ROUND(unsafe*pph_multiplier) AS unsafe_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c b/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c new file mode 100644 index 00000000..1efcbe06 --- /dev/null +++ b/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c @@ -0,0 +1,420 @@ +{ + "custom": {}, + "params": { + "titleExtra": "4 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/LoopStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "loop", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Loop" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "no_demand_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "No Demand (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 130 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "no_demand_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "No Demand Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Loop Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 b/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 new file mode 100644 index 00000000..02587298 --- /dev/null +++ b/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 @@ -0,0 +1,304 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "DIV" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": true, + "originSide": "left", + "paddleThickness": 10 + }, + "status": { + "color": "#AAA", + "isExtended": true, + "isRetracted": false, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "DivertPaddle" + }, + "position": { + "height": 42, + "rotate": { + "angle": "180deg" + }, + "width": 101, + "x": 48.5, + "y": 14 + }, + "propConfig": { + "props.config.originSide": { + "binding": { + "config": { + "path": "view.params.props.config.originSide" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": 10 + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 b/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 new file mode 100644 index 00000000..1d62e3aa --- /dev/null +++ b/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 @@ -0,0 +1,108 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 535, + "width": 1454 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Sorter" + }, + "position": { + "height": 515, + "width": 1434, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 396, + "y": 310 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 50, + "y": 310 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 1340, + "y": 350 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 b/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 new file mode 100644 index 00000000..d70afddd --- /dev/null +++ b/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 @@ -0,0 +1,43 @@ +WITH SORTERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter + ORDER BY sorter +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(success*pph_multiplier) AS success_pph, + ROUND(awcs*pph_multiplier) AS awcs_issues_pph, + ROUND(operational*pph_multiplier) AS operational_issues_pph, + ROUND(machine*pph_multiplier) AS machine_issues_pph, + ROUND(scanner*pph_multiplier) AS scanner_issues_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a b/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a new file mode 100644 index 00000000..e53c528e --- /dev/null +++ b/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a @@ -0,0 +1,49 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + total AS total_pph, + success AS success_pph, + awcs AS awcs_issues_pph, + operational AS operational_issues_pph, + machine AS machine_issues_pph, + scanner AS scanner_issues_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 b/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 new file mode 100644 index 00000000..d893ac2c --- /dev/null +++ b/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 @@ -0,0 +1,293 @@ +{ + "custom": { + "disconnected": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Normal" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "type": "property" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 47, + "width": 68 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ControlCabinet" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_dpm_mcm" + }, + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 4 + }, + "transform": "rotate(-180,30.5,20)", + "type": "path" + }, + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": { + "paint": "#4C4C4C" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 4 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 62 41" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "aspectRatio": "68:47", + "mode": "percent", + "style": { + "classes": "Disconnects/Device-Connected", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f b/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f new file mode 100644 index 00000000..b109ee70 --- /dev/null +++ b/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f @@ -0,0 +1,108 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 528, + "width": 1123 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Singulator" + }, + "position": { + "height": 508, + "width": 1103, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Inbound" + }, + "position": { + "height": 40, + "width": 110, + "x": 40, + "y": 466 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 991, + "y": 180 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 640, + "y": 180 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba b/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba new file mode 100644 index 00000000..a222549e --- /dev/null +++ b/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400B3", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b b/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b new file mode 100644 index 00000000..55e15f24 --- /dev/null +++ b/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#8C8C8C", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf b/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf new file mode 100644 index 00000000..aee1c2f1 --- /dev/null +++ b/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf @@ -0,0 +1,257 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "OK" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 40 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "style": { + "paddingBottom": 1, + "paddingLeft": 1, + "paddingRight": 1, + "paddingTop": 1 + }, + "text": "SIO", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_fio_safety" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a b/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a new file mode 100644 index 00000000..3bb886ed --- /dev/null +++ b/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a @@ -0,0 +1,64 @@ +import system +import generate + +BASE_TAGS = [ + "SetEnable", + "Color" +] + +def getStatus(*args): + if len(args) % 5 <> 0: + raise ValueError('Argument list must be a multiple of (path, rowstart, rowend, colstart, colend) pairs') + groups = [args[i:i+5] for i in range(0, len(args), 5)] + + # Produce tags: + tags = [] + for (path, rowstart, rowend, colstart, colend) in groups: + for col in range(colstart, colend+1): + for row in range(rowstart, rowend+1): + spiral = "CH_2{:02d}{:02d}".format(row, col) + prefix = "[default]"+path+"/"+spiral+"/"+spiral+"/CH/" + tags.extend([prefix+tag for tag in BASE_TAGS]) + + # Get values + values = [val for val in system.tag.readBlocking(tags)] + + # Produce status: + unknown = 0 + faulted = 0 + disabled = 0 + full = 0 + fullWarn = 0 + jammed = 0 + enabled = 0 + for (SetEnable, Color) in (values[i:i+len(BASE_TAGS)] for i in range(0, len(values), len(BASE_TAGS))): + # Ignore those that don't have SetEnable: + if not SetEnable.quality.isBad(): + if SetEnable.quality.isError() or Color.quality.isError(): + unknown += 1 + elif Color.value == 1024: + faulted += 1 + elif Color.value == 512: + jammed += 1 + elif not SetEnable.value: + disabled += 1 + elif Color.value == 128: + full += 1 + elif Color.value == 64: + fullWarn += 1 + else: + enabled += 1 + + + headers = ["status", "count", "percent"] + total = max(1, float(unknown + faulted + jammed + disabled + full + fullWarn + enabled)) + values = [ + ["Enabled", enabled, enabled/total], + ["50% Full", fullWarn, fullWarn/total], + ["100% Full", full, full/total], + ["Disabled", disabled, disabled/total], + ["Jammed", jammed, jammed/total], + ["Faulted", faulted, faulted/total], + ["Unknown", unknown, unknown/total], + ] + return system.dataset.toDataSet(headers, values) diff --git a/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d b/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d new file mode 100644 index 00000000..f6968286 --- /dev/null +++ b/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d @@ -0,0 +1,44 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner=:scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + total AS total_pph, + good_read AS good_read_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 b/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 new file mode 100644 index 00000000..9f144187 --- /dev/null +++ b/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 @@ -0,0 +1,46 @@ +WITH INDUCTS AS ( + ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + induct, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct + ) UNION ALL ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + "AR" AS sorter, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "UL%" + GROUP BY lane_id + ) + ORDER BY sorter, induct +), SORTERS AS ( + SELECT + sorter, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter +) +SELECT + I.start_timestamp, + I.end_timestamp, + S.sorter, + I.induct, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + ROUND(I.total*S.pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE I.sorter = S.sorter +ORDER BY sorter, induct; \ No newline at end of file diff --git a/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d b/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d new file mode 100644 index 00000000..0effd7f5 --- /dev/null +++ b/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d @@ -0,0 +1,196 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\t property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n\t+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\t\"\"\r\n\t),\r\n\t\"No Tabs\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../EmbeddedView.props.params.usesTimewidget" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/StatusTabs" + }, + "transforms": [ + { + "code": "\treturn [v[\"Title\"] for v in utils.datasetToJSON(value) if v[\"isVisible\"]]", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 160 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Statuses/\"\r\n+replace(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\" \",\r\n\t\"\"\r\n)" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "path": "Windows/Statuses/LoopStatus" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f b/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f new file mode 100644 index 00000000..ca24e026 --- /dev/null +++ b/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f @@ -0,0 +1,323 @@ +{ + "custom": { + "forceModeRefresh": false, + "setDatesScript": null + }, + "params": { + "endDate": "2021-02-11 00:00:00", + "refreshDelay": 30, + "startDate": "2021-02-10 00:00:00" + }, + "propConfig": { + "custom.forceModeRefresh": { + "persistent": true + }, + "custom.setDatesScript": { + "binding": { + "config": { + "expression": "toBoolean(now({view.params.refreshDelay}*1000))\r\n\u0026\u0026{view.custom.forceModeRefresh}" + }, + "transforms": [ + { + "code": "\tnow \u003d system.date.now()\n\tcurrentDay \u003d system.date.getDate(system.date.getYear(now), system.date.getMonth(now), system.date.getDayOfMonth(now))\n\tpreviousDay \u003d system.date.addDays(currentDay, -1)\n\tnextDay \u003d system.date.addDays(currentDay, 1)\n\tstartDate \u003d self.getChild(\"root\").getChild(\"StartDateTime\")\n\tendDate \u003d self.getChild(\"root\").getChild(\"EndDateTime\")\n\tvalue \u003d self.getChild(\"root\").getChild(\"Mode\").props.value\n\t\n\t# Retrieve shifts table:\n\tshifts \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(now)\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Build SORTS list:\n\tSORTS \u003d [{ \"name\": shift[\"Name\"], \"start\": [shift[\"StartHour\"],shift[\"StartMinute\"]], \"actualEnd\": [shift[\"EndHour\"],shift[\"EndMinute\"]] } for shift in shifts]\n\tSORTS.sort(key\u003dlambda x: x[\"start\"])\n\t# Add end time based on next sort:\n\tfor i in range(len(SORTS) - 1):\n\t\tSORTS[i][\"end\"] \u003d SORTS[i+1][\"start\"]\n\tSORTS[-1][\"end\"] \u003d SORTS[0][\"start\"]\n\t\n\tstart \u003d startDate.props.value\n\tend \u003d endDate.props.value\n\t\n\tif value \u003d\u003d \"past30min\":\n\t\tstart \u003d system.date.addMinutes(now, -30)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"pastHour\":\n\t\tstart \u003d system.date.addHours(now, -1)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past2Hours\":\n\t\tstart \u003d system.date.addHours(now, -2)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past4Hours\":\n\t\tstart \u003d system.date.addHours(now, -4)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past8Hours\":\n\t\tstart \u003d system.date.addHours(now, -8)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"currentDay\":\n\t\tstart \u003d currentDay\n\t\tend \u003d system.date.addDays(currentDay, 1)\n\t\n\telif value \u003d\u003d \"previousDay\":\n\t\tstart \u003d previousDay\n\t\tend \u003d currentDay\n\t\t\n\telse:\n\t\t# Resolve sort:\n\t\tif value \u003d\u003d \"currentShift\":\n\t\t\tsort \u003d SORTS[-1] # Default to last sort (assumes last sort includes midnight)\n\t\t\tfor i, s in enumerate(SORTS[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telif value \u003d\u003d \"previousShift\":\n\t\t\tsort \u003d SORTS[-2] # Default to second to last sort (assumes last sort includes midnight)\n\t\t\tSORTS_REV \u003d SORTS[:]\n\t\t\tSORTS_REV.sort(key\u003dlambda x: x[\"end\"])\n\t\t\tfor i, s in enumerate(SORTS_REV[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"end\"][0], s[\"end\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telse:\n\t\t\tfor s in SORTS:\n\t\t\t\tif s[\"name\"] \u003d\u003d value:\n\t\t\t\t\t# Apply:\n\t\t\t\t\tstart \u003d system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)\n\t\t\t\t\tend \u003d system.date.setTime(currentDay, s[\"actualEnd\"][0], s[\"actualEnd\"][1], 0)\n\t\t\t\t\tbreak\n\n\t\t# Increase end if before start:\n\t\tif system.date.isAfter(start, end):\n\t\t\tend \u003d system.date.addDays(end, 1)\n\t\t# If current time is before startDate, then subtract one day to show last occurrence of that sort:\n\t\tif system.date.isBefore(now, start):\n\t\t\tstart \u003d system.date.addDays(start, -1)\n\t\t\tend \u003d system.date.addDays(end, -1)\n\t\t\t\n\t# Apply:\n\tif startDate.props.value !\u003d start or endDate.props.value !\u003d end or (system.date.isAfter(now, start) and system.date.isBefore(now, system.date.addMinutes(end, 1))):\n\t\tstartDate.props.value \u003d start\n\t\tendDate.props.value \u003d end\n\t\tself.session.custom.timewidget \u003d {\n\t\t\t\"startDate\": start,\n\t\t\t\"endDate\": end,\n\t\t\t\"mode\": value,\n\t\t\t\"update\": now\n\t\t}\n\t\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.endDate": { + "binding": { + "config": { + "path": "/root/EndDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + }, + "params.refreshDelay": { + "paramDirection": "input", + "persistent": true + }, + "params.startDate": { + "binding": { + "config": { + "path": "/root/StartDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 550 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "StartLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 180, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(self.props.value, timewidget.endDate)\n\tsystem.perspective.print(hours)\n\tnewVal \u003d {\n\t\t\"startDate\": self.props.value,\n\t\t\"endDate\": timewidget.endDate,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap endDate to within 7 days of startDate:\n\t\tnewVal[\"endDate\"] \u003d system.date.addDays(self.props.value, 7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 225, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.startDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-06-01 20:00:00", + "formattedValues": { + "date": "2021-02-10", + "datetime": "2021-02-10 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(timewidget.startDate, self.props.value)\n\tnewVal \u003d {\n\t\t\"startDate\": timewidget.startDate,\n\t\t\"endDate\": self.props.value,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap startDate to within 7 days of endDate:\n\t\tnewVal[\"startDate\"] \u003d system.date.addDays(self.props.value, -7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EndDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 410, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.endDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-06-02 20:00:00", + "formattedValues": { + "date": "2021-02-11", + "datetime": "2021-02-11 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "EndLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 365, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 45, + "x": 5, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Period:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.session.custom.timewidget.mode \u003d self.props.value\n\tself.view.custom.forceModeRefresh \u003d not self.view.custom.forceModeRefresh" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": 55, + "y": 10 + }, + "propConfig": { + "props.options": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\t# Add default relative options:\n\toptions \u003d [\n\t { \"value\": \"past30min\", \"label\": \"Past 30min\" },\n\t { \"value\": \"pastHour\", \"label\": \"Past Hour\" },\n\t { \"value\": \"past2Hours\", \"label\": \"Past 2 Hours\" },\n\t { \"value\": \"past4Hours\", \"label\": \"Past 4 Hours\" },\n\t { \"value\": \"past8Hours\", \"label\": \"Past 8 Hours\" },\n\t { \"value\": \"currentDay\", \"label\": \"Current Day\" },\n\t { \"value\": \"previousDay\", \"label\": \"Previous Day\" },\n\t { \"value\": \"currentShift\", \"label\": \"Current Shift\" },\n\t { \"value\": \"previousShift\", \"label\": \"Previous Shift\" }\n\t]\n\t# Add shifts:\n\tshifts \u003d utils.datasetToJSON(value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(system.date.now())\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Add shifts to options:\n\tfor shift in shifts:\n\t\tif shift[\"Enabled\"]:\n\t\t\toptions.append({ \"value\": shift[\"Name\"], \"label\": \"Shift: \" + shift[\"Name\"] })\n\t# Add custom:\n\toptions.append({ \"value\": \"custom\", \"label\": \"Custom\" })\n\t# Return options:\n\treturn options", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.value": { + "binding": { + "config": { + "struct": { + "mode": "{session.custom.timewidget.mode}", + "options": "{this.props.options}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.options !\u003d None:\n\t\tfor option in value.options:\n\t\t\tif option.value \u003d\u003d value.mode:\n\t\t\t\treturn value.mode\n\t# Value isn\u0027t in options, default to currentDay:\n\treturn \"currentDay\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "dropdownOptionStyle": { + "fontSize": "11px" + }, + "style": { + "fontSize": "10px" + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 b/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 new file mode 100644 index 00000000..f91b8751 --- /dev/null +++ b/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"(sorter \u003d \\\"MCP20\\\" AND lane LIKE \\\"SO%CH%\\\") OR (sorter \u003d \\\"MCP03\\\" AND (lane LIKE \\\"FL%1CH%\\\" OR lane LIKE \\\"RO%1CH%\\\"))\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 b/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 new file mode 100644 index 00000000..46a4a7ea --- /dev/null +++ b/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 @@ -0,0 +1,75 @@ +{ + "pages": { + "/": { + "title": "", + "viewPath": "Windows/GraphicsWrapper" + }, + "/alarms/active": { + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/history": { + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/hitlist": { + "viewPath": "Windows/AlarmWrapper" + }, + "/cameras": { + "title": "", + "viewPath": "Windows/JamCameras" + }, + "/commission": { + "title": "", + "viewPath": "Windows/Commissioning" + }, + "/config": { + "viewPath": "Windows/ConfigWrapper" + }, + "/custom-reports": { + "viewPath": "Windows/CustomReports" + }, + "/help": { + "viewPath": "Windows/Help" + }, + "/statistics": { + "viewPath": "Windows/Statistics" + }, + "/status": { + "title": "", + "viewPath": "Windows/StatusWrapper" + } + }, + "sharedDocks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + } +} \ No newline at end of file diff --git a/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 b/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 new file mode 100644 index 00000000..cd05cb73 --- /dev/null +++ b/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 @@ -0,0 +1,246 @@ +{ + "custom": {}, + "params": { + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 750, + "width": 1450 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Graphics" + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "path": "view.params.view" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.session.custom.currentGraphic \u003d currentValue\n\tself.getSibling(\"DexZoombox\").props.zoombox.current \u003d 1" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + }, + "useDefaultViewHeight": true, + "useDefaultViewWidth": true + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "DexZoombox" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.zoombox.max": { + "binding": { + "config": { + "expression": "coalesce({../Graphics.props.params.maxZoom}, 4)" + }, + "type": "expr" + } + } + }, + "props": { + "view": { + "height": "750px", + "width": "1450px" + }, + "zoombox": { + "current": 1 + } + }, + "type": "dex.controller.zoombox" + } + ], + "meta": { + "name": "Window" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "meta": { + "name": "mhs" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 110px)", + "y": 10 + }, + "props": { + "fit": { + "mode": "contain" + }, + "source": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH8AAAAgCAYAAAFMYpenAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAABrWSURBVGhD7ZsJlFXFmccfqCGJxi0qCri3oC1bv3vr3vd6AQURccEkShITt+hIkhONW6ImMeI2GhUVxyUxSmJiNBM0GhFRQZNJNHHfFxRBoIFe3tIrTXdD93vz+1fXfbxuuoE4MzmZc/KdU6fqVn31VX1LffVV3XtjEWRKSnZWXh+PH2wr/h5YZ8J8PhYb3GqSWT1n/YDHWGzq1Kk2P+qoo6YnEonPkDfpedKkSaWTJ0/++Mgjjzw6NmvWrMENFRX7RZ06w2S+3vd/ozJI80B+BcRTHIH80UcfnRcBylMpbxBerIHO9YlEhfLWeHhxR5CwxCAwf+LEiZ9W2RFoVFkESFfT/qKeC9BQWrGfK247NJtwVSqe+LcNTL06kdg964W3przk5VC/fObMmTsIR9OGjVEqiw1Gv4I0dsqUKafG1LHW90+A0Mvrg6QVpuQgAiC/A1J+2rRploAIiYAjlIO9veE//GODF/y22Q/mZX2zoBGN1AZjDwThR0IURARUFgHSKXSuhPhTFkGw3oQfdTBy1kv8PpVMluUS5fl1CFMzbCc1ecFjDjVGx7MnTJhwmHssAPVzIbw9A+wHB8+5ainjNdoOdOWHMI9GuFlzxBFHTLQIGiQVDy7IhuG0tG9WSIvzZszYrskPrtBEhNPoByvhsktlJ56NEO3QM4Pueswxx+R5zkvb4haclsrKyt2UxLU0T/1pwikMHEEXg9R55s5MvDLMxP17qBrUaII5rUxkje9b0TGprhYT1qisCZDmqyyCUVmijibAoNbkBNEE3KMF6s4lvekeZcv+I20M2E5Sji4fVH0uWSEVNNeODawIBQx6MoP8wD0WgPpHZ8yY8amqqqp9mJTtL2CgO5HSiOOPP/6zlBczmVraf++aN8G7paW7u2Is73k7yC9kDjlkuKv6vwMtg66wPJ9PVlp9o+v3ZYAbsQ3Ebg1xjTGft8gABvS+K/YCuHtaOdy9QtkuamxjT8pvqCw1IKWVMkLKf1VdbMW4cQdosCY/XL3q8PjBGNvjrMl8nTHfUnu6rHwYzq5Lk7EdAK3HYhELGKSLurdUZpBOjG+kyhK97ERlGSqqO4Xn0UzgP1QXazWJJ9pxACq3xMMftzAZGWLKmJE4yFryO+tLzd6tWt/x4EjhaQIiyoAn6pnBXyJtKJ4AdhDHIHdnAodGE3CO5GEZqp4tNPjm/ZRn1qq8nsHXw2ldZeVBKd8/P4NzTXmBNRYZZioIzlZZ1i5DcxzNYYAuCE+Gq7fVTrldg0aJZzsBD7tiks8ee+yxWhULVBdrDcJ5snyVm0xYny0zSZXlDpv9cE2T7x9UF098TWqJNitNAGvfDu5OU5mJDIHgF6IJMGgnZWu88hGahMrFoMmTDYrlhg7dsRMDbArC3Joy/wT2opMkbum83kzcm0n9Qe5VNtLTddMEVEYS+yrXBLZmA+Tv44SmIrXpkoLqLKweE4zoDJJtkoRSR5Bc1zJ+/J71ZeYYJJRjVfzOoVqA0DNkg3ueegCiBzMJa1iI/JHy8vJhKmvtMzErbuovA+djnpeRjlDdZrDW8/ZrCsMfrTOJ51iC7RkvsLuzIBWv2qc5CK5p9ILlUtEGPKgkpVXUEoQvZ73gm/T/rEPvBTI8Bh/qHrcKmjjS28M92siBSX8eQ95dZVcdwWDVqz3STATQ2F5aom2kEs8HkHZyzZugzgtOxM7WW5eAyjF6Sb4lG/evllDWh4nlzkPncQs5FsiyBhMshOlnMI/aNgTRQFs3QqF+EU71U460BQa/UmpHe8+RdnTV/QLa/J5w6bOEhWMFyqQPdat4vcoW0QHPI9SmGIy+h6sOgQ+n/wrZuuopd6gv5dxxxx0nvB/bzoImr+JyTVzMtQVhdSoej7umWNokvq4oQW1YxIZsEMxwTbEVE8ftmg6CS7Jx82U9Zzxzo3AlQEx3CYIraJAJXK5Jktu4jskUwpUIWDdy1GtJkZt7K3JZTHgUdZ30ayIdYjs4kLlTZ/tgZXbP1XLQWoXGQovUBwqWwkoc1OSbN2XSaK4JjzNG9Q1BcFq+osoyrqCA/INMSbBzC0zB3FN5BCafLavIemaupQVRopmHVKfdKxMEp6teIAG4CT1FWqQyE05FYRV1v1cdjKSZ/I1Oa28XC4C2dlIOAa4ifUhaphw6KyQApUgAWMX2lO8WHWkcnG7an4bmiX2XSYzI52UJgPCrfY2fLFddelz5kWJc65xIqJHA88mGeFC1ivCKJbCk2WjdJ/IE4mvSnv9I9YjEZ+pLJ+6Ez3hDy0hLiBDvODsAwMCRAGzkBONJJtQgrSnJKpjwTWoj/4JwyfsKoJP+baTTeaZ50hS86mTqvyzmlajrFXVFIFz6PcJY7aLNeHe6JkwXTSkGdWbeyfNZS0tKhjSxkzqU2CwcTcqUn9Pih12EC1bzOgu45lhd3HwR02+S+YtW1vN/Ketyzb0EUKwBJn0Dk1qijdVVDSgA8OwSiLaYCOQDxLwEGQmAuj0YqxA/RQDjh8ovgL+Ex03OdNUY/yA23vfk1eXMtB2hyW7ydiwhp1OBGFeAjpBe01JIe+ERG3kWrhhXXE3b2rp4POHIFoABrznhhBM08NObmWAfQKsnOdxlkRMUY5o4TG4UExbRgby82iQ0LMsuYQQ2Xc9ypuB3kTrkAJ322xFOwTo3g1QiMRFmrycsupegYG6HSd6L87u23ktUOBQLRKgjWQKz074/c228quA4/9kA4Q2VlSC8vVzV1iHvxXZQCI4Z26NtMbSM9PZo5ICi0Kxx7NgDc6NGfc41/f+FPF4za8wxLWH4AM5wBXt7ppYjomuOZYP4cW0msQCNd8nU5TS1XLImbGwLy+euMsbuv/3AIKS/twJh97xVcIH2EPeoyG9H1v2eCo5cVQHkI9TGGJsFN/IBLIWDMf1RtJdoHlT3DqKWe94uBDP3cRLYIMZ0NGEvb6tzQTkM/wSn1qm1zvpWm2VcJwc9dxNHrw/CVDpuvm4JFoHBghj8edbyDa5qi8D6NazPD5m4PeYIMN+rqXuHugt5LDhVAQxdCH21zXZVdn/n+Tz6vUG/FO1N5Gnm8AHCuFXCtIjy8mx/88WYi/zyzUG4AS//Wm0YHoBmr1JwpDbdflHfTPT3PLHCE5zTXoP5Lp1QJASEtl6RpCXsgAGHMdhKBs/h1M5w1f1CRUXFfuB/yGQxxImFnQVGfuuittt57MU8bberDUafdFUS1qUaT3QYW0e0VlKXO361aE4WMeUHsxTI6Lynk0/GNw/We2FlfWnpTnWeN6XFBN09OwHBjB8uqPF9Yzs6SMWTx2vHcPt9vtUPP24ZX7mna7bMk5YxCXncJgTQy3lGIA8P3kJNmLwbRr/hmuTF75fHpu8tPPZlfo7awIluZnYkrRUdGP05tBLkugAMRJP8F+wqQ2PZw/19mXSd3au1fv3gNkVvIlI7dMqOxAEviym1IYDF+aKDTUMQryLKkyZitabicM4JnFXZFpPl+AHzbYsERMyTbHBD/hFps0tHJnWLti6YGZB5cG7msRfztN1azDwWsyv9FeOL1mYnPC2JfD4/KIYWp3UGiQ5pDAEskbaXH8X6N+a6dDy4WYxLMK0myGbGjy8lGNo5ZczxOMMFtOVk6qvGjNlNRNN+cLV8QJusxwv+bEcCmEiBeSbT5TS7mEnaK1oB9TPRVk44MCgz7Zd58jtwbrvh5HZXUhn8u4qZh7lPQe9FF9isoXwROJufODH1szD1bhvMxIPbVLdi4v6fhqkaeXMYUtDTlfXCi9TG2j4TYVinKKEoQqxJJvdXWyaRCPAD9gic9sxq7R6qZwIR8zkmeDsTWaeJqax2aQfGW52mfgveW7IQ2gvMU3+/6sCT44pifRvvg99MfYF5AeVy6lZIKO6kuZJxr4POpkixPm6+rUhOGiNctUdAXbsy+VelVTFPnkt5wYV5ztmtY5N7NXnBO83OImzIW9UT5FSP9UfLN4h5DkCrczhS1UfMuwmWk85zjHa7Cb2tSYLzN4SyM3UvitH+mAfHLh3RUorqHO0C8wLoDCddQ3ud6DtLSEGrx+nWlfmnYqZdbr27i438oLQXLJaHt57fhMub4okr8t7MHRpM8rsdOD4OPtJ6W7MJVulWRr1YDueIcR2QEJq9exIwYIF5HNZU1TGBX2oymrwTRC3LoMRtUdqeNmNe+OQPgXcUTE1Rgp4u2h52ltSL+QjA3wOcS5jDcie4Np7HsuYTEzHvDmkRRhqqyxIl6pA2wcPtQfh6Km7OqQtDu17q4+UHYwWN2tYkrJTvX5/1/X3rRodD6yeW2hOedgtd3jYYU9jTi5lnIlZQAb6DCfxNjDOhdZFQYGJIf8xTjrz99a6qAODfULzmBwLa9wf3LY3J2GfGcqPKP0cs/5bMXlpr9MO/YMb76HRXfFNTfUhiONp+QczJGgh6lry6zz7W8+ttD23z1L9nvw/aOQAVDiH9MS+grJsbrcVLXNW2ML/VrQ4YxHj7yfG55wKA8wcxTz7TVjQQlKDJbmlfDLQE4bJ63//eWs7zsoyMCX+kvdstAR1fO9LGTG6Jl1dlPHMHzH6kE57We4/Ww03XR8BAzAuYxMGlRUIW8wjjdTFvteOA8q8dg5ttdRHz4Nh3UmKa/gsZ83HwTydirFKi/Rpw17lltmkeqXjwQ53JxZzWrF69YQ2dMNUhq5DGdZmhckOQOFd9OPnNz5dXWoGpj3YHrOiuFUVbmACGRzBgtZvgCa66X5AgwFkqD00/+6pBQN3DOu7CzE957MU8bXeqjVw3vxpve5h7dvr06dafIIhO8k75Bc0BJTwRHZkLUF/mfwPmV7cbzvEw05N64nfybphclvXDrwpXlxYccp7Il1fkNyAghPORbnctoT5A6KmXbT8jzWfy41z1gADepUxQWpvkqsTQBdQ9SZ2WQi/m0eo04YNTePVFXRJh3IcQ3iRf69IrPF/Z3+HIgu7Z0344k2jt5+wC9643ibnE/XfXBsHZes/i0CzzLdRxnr9WQU/xJeY/E6BtOdbhCHSYTn+uettB+362qmrf+spEBRHeyZm4fwHx/w0EPv+eLvNPaygrs0FOX5DDrC4rK2FXmEaf8xs8c2urSd6LJf0C/2GTLZvgFwRHdxNbXFVnzNdrCZaqSzddp/0L/sGg6NRGrAR+hACLObjV4tPWsTFssJ8iJCt0wm1nl3soOvZHkBprRmbLwotYPYtYOXX0a9dmIffR40J63Mkm19JT30YduBs7g2QLxvBByjN3p8b70xo8bxdHeougzYLlPx4rvwBrv5gU72/H+6Qwa9as7aEP2UlyS2fjP3vdqwrKy8s/h2uaQJoJ3rm4mTPIA61Ah9IvyBXpKgP8s5i/+um4M4nygLyrjd0/1FjgX0u6i7q5pF8y5lyef0q6ifR90knUlQ4dOnTg90krxo3blZ3+SxljFuDHW3Ps3orpFAlEEb1eVeglPEawTp+WrA6CcXKDzaZyJK5wNsqs1l2Pko4/0eW3gmMpmb2jC5x2yjKKDevMJiPQyUHf+wi/m/7UdXKOfLbOD0+tLvryoD+A6WEweSWCrnGvMJbC8MXsBQV3/QlBodMh0J4t2tqMeV4hoUO77+Z+KGP+pzZaFCq8TvBuVz3NvfaqYqB9BPTviPoxjjbwp+jb94JwMEYyBrrXkd6FR4srftVPeZT0HNW5YKOapL2z95WuXDT7lyHOvY/V2qyQTQqQInTMk2Ka/GA9Yd1rKPTBVJm5kS3gbHmHtRXefo3GnImS35VhKOohDrbGYs/MnIUJJF6n7uf1XuK8Gs87dm0iUbEmmSyvKTMTODrOYAu5sskkFuJl6toCd0TU2OTyMhhKK97nHmLqQNuQm3YvQBjDENaPyZdJiC7S0aufhTA97ZPsedDahb5nQuNVaHW7aCnH81uMdVbfqIm6UaTfgLNBuOA1szpvdW9ftqh8xrmN8aKITJHd49QVXk2Bsz20TgRnsdqL5lJL/ifyX4N/F/kc0h2U76Necf1LzF1fsmSov4qy/QjBghSvz2qyJvgvBL9RK10rVmHv+iDsRgmrMn5wcyYeJHTx6bpZ0Pv9lAlv0pW3DESGon4yHJTVqm0BxR6bxh26Lr1A7/7TZWXDmiord3u3dAYGWD4qE09qq3kfz6MI03qOddYgwhynyIXNGE0+trkBSPkwp0++dOFhz/xKMgJy3eLegsD0lmdAJRTBduBXQu9BBNgS0ZPQybupl/K/0degnPLvB69TygFX95e3bIvyoTlHYxQpf34f5e9K3a3grROO+KL8NHXH0tbLAzkYpOuCESNG6Jr/IHjwoHvgySefvGnOek/R6ifv6wjK19vX+c7tktpw6w9nE5UVeoeZnxHbDiUOy5SVHbZiXHhAvVdZgVH8rjUIW7TaWbl6fc/K1wnYLENR5xZ/hyUjWzk2OHBt3EzF2L7fGgTzWNFLm0zQiNe5Je1eBM2aFRust2hpL3hScYU1JAxKXgWDyIJ7T7Xvj7ZEiwDB9at8lZ0XkLAU7muP3Oz9ZgSig0AvI/8o6itl0OcTKR8FXodytrj1uFjhJ5rvFpS/E+NeC05Grt4p/yPSbPCOpF63830/ctkyEI1/BXf+V442G6VErXzc7Qbc9vzqskThJPziMSU7NycSp4P3ZleYXI3ia4jQN8q963QvF92KAbDin03FzfH6IjBPDEEc8IUWP7gNb/IC+/tqFN62HgNRTKD3wTIYYoyftSaThb0I9/4ZbQdpP9DXRHYbUFLcgFF9mImbLzrUAoh5BGGV71a79rmPSUupb5MiJTTyJoT7IMKd4LpakAKo/yK4z4Cj972RgOug8TZ5SjTAyemZ/v0qH7z7Gdv2p6yPyp6nfjYe4BKXfliUorrrwPur5hzNva/ygUHQ09dIN1BvDcDxo9TCvPR51hOkq0gnRt+YDQi6pq3zzLcaffMeSshpdSkoY9XVpuL+rMYwPMChxl7V551+eBJKXyIPEe3LKZIMpo2TQHMQPlnneSfqtKA+uu1oM8bHQG7Co6xUH61iaNitRWPJeOrj/gM1eBQ7kINMWXhY2phf6Y5ceOor48Tg1ugGlTF6uToEVlC+W3VaoQ8gxC+RK+r+M0LaWLxqaLucAOoQVtVonuVSs2pTf3DXQeNhcKbTV0bxfCRsyltTfrvwtIIjesXBWN/kxrNKVx/l0OqrfAs6wVAfkPRd+nPgas8v3OAU0cqQ/gLO9eSTtW3QvdfWM6gubs4hmHubVdkt4SpIQ8BZjOLG6EtmwazYrMHs+0fT9hcUZt/iSIFSit4B5ujH3p8iaPxV1iSO0epVv0zZhMOIJ+5k9dfpmKg+0b1/LlFh++Ip/ihXz6nBGo28Rg3P9V7weBN4cv3RFRqGszIdN18Dt9e+D4O9lC8h8vwYQrQrnHx/2m4k1UohzgD0WdsKcr3x6ZDQJETq9Pb4ImhYb4Sgp5FejwRLeYvKFy3Rh85GcOV9niX9gfpHyB+Lkp6V6LeI54/BLxgBdf0qvw8MBk8fb04j1xfmjzJnvezZqLnqZOJkIT6fpf0k8k3Hx7oyfzqu+pkOXL2Eq1VG6kLBL9SU+adK6Q41tnZMUIVXWIjiuuSyWc3dxAUftpjEr3Hd35XCOAWMUCAnr5Ii2MMYnmpn7xZtKV7bg1Z72gQv6dVfgzGX4ca/ywligvppnEZiCjzKT1sIJDUfGZr1En7QnvHNgr53CwKY6k/5+qNDW5e1eN2d4mL1Ce1C2jslaOEpOWU10+de+ujTI8u3W2n6PPeNbVE+SXu+jfahpz3/RvqUYFRDREt5lPSsxNj68n42+JGytlX5vUA09WqTvh60LoXm86Q2N+8cdBfzfLxDj8W0uuWWEW6jU6hVkFZbgxe+k/HD81eV9XwKnC4vG5Y15lso+kbc+zezY/3RuZJNH5dEoO/eWZ0XQ/cdeRJdjOv4JwNgBW/A2H63Nh6vcugF0Jd/ihcY81H6tkUnD/XXtyEYwytNxnx5adDz91ExwOyAykfAvbxEGIb6jOlCcD8QrpIEhdBOoa7XxYoE+gmU/78e7TvYlpNKAaCpGOFReIiM+wNo6oVBDx1d0NTF42Nwp/cQzDXYb1SkeLfaMIS2RhM8zz57OSuzcqAbN6342iCYBJ1ZGNBLKKxdN3n2zE8SXb0w1BcPNezn6rNs7Ni9aoKgtJ7tpN7DA/jmWSL8hijCV0whA9AxstGYl+rj8TNyHF3sgH0AxrZZ+QLq9btRApwryb+HUMa6pl7wz6J8zZf4pAo8fZBwMe3Hkvanvr9jnl5u6GJKHy7Z1+QoXyv/NfqcRnPvuTQfaj5f5wUXNrHa29j/N6A4uWe9sravuVAC7rcdhazEXb9EvgjFPklAtojyK3pv34pblsFopWrFqr8LIvX30wv1cXOG/TqsouJwto451C8Hr5O2jdZDWCW720Se3RdiNcQad9X4SSNDddPdDBDcMBi9gvxj7XVSEswvQAjT+lP+tkJJSckQaHxJQhRdrSDovotSz+6rfBShG74HGHujuwlsRdhzOEkodhpw7u6/gtul9Gju0FlA38INnz73o+6rtNnAk6SvXdL0e5tcgd0i0lOUF5H0M89qUrdoOeVneb4ZQxx4K6kuTZSwr19CgPY3lNPWlUjal7RSqlajAjUpKrrClXIjxbH3g5e0LlpfuNDWRN2fMJbv6JW/GyKmO/v2MLGgO1mR0ztR0RYdeQf1Jf5oIXh8IxUPrtctIkrf6vkVxuzKh8klMKtPhPR1+yOkqf8T5asvita3Es+hmHaELrr2hm+glY/A28DVt9UN9LuFeW1x5aP0vcC7gn719FPg2cHzY8WKcj+tjKFeV7sfwF8jqUuGIOXKaKLklC0j0hFXf+nod9gZGOe2vX18tzSxu/0t1oSXrfOT81r98D1WZZsU5RRr9/CNUjRJrprtAaUl3mJvfqDZDy7QraBWuiNpQatXXwKw7z+KIXW0BGErK/09vM0itoW78Sbf0Y9bf+9rUq0Mjk3DYdaDUV16VCKAUQhniy9VtgWgMUS0oRvI9SLE8U6QvRQqL0F9CcZSQU5mX7wM6JqLYDDz3UXGo77OvY/sa1wC1elDXmiOBm8KfU6nz/nM7VLqfqCcuvOo+wo0E8hD37FvFpf93aBvW7SC2dsPVKrz/YP0R10j5bZDEsMbx43TWXKroKOcjOL18eP3XOp+Hf8X/CMhFvtvEdz4lYWIqWMAAAAASUVORK5CYII\u003d", + "style": { + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.image" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 285, + "x": 60, + "y": 10 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": ".../Window/Graphics.props.path" + }, + "transforms": [ + { + "code": "\tpathParts \u003d value.split(\"/\")\n\tif len(pathParts) \u003e 0:\n\t\treturn pathParts[-1].replace(\"_\", \" \")\n\telse:\n\t\treturn \"Unknown\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tzoomBox \u003d self.parent.parent.getChild(\"Window\").getChild(\"DexZoombox\")\n\t# Set new angle:\n\tnewAngle \u003d (zoomBox.props.zoombox.rotate + 90) % 360\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tsystem.perspective.print(zoomBox.props.zoombox.rotate)\n\tsystem.perspective.print(newAngle)\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tzoomBox.props.zoombox.rotate \u003d newAngle" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Rotate" + }, + "position": { + "height": 25, + "width": 25, + "x": 32, + "y": 8 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "pointer-events": "all" + }, + "text": "↻", + "textStyle": { + "font-size": 20, + "position": "relative", + "top": "-1px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "HUD" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "overflow": "visible", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "status": { + "tooltip": "\u003cu\u003eZoom:\u003c/u\u003e\u003cbr\u003eCtrl+MouseWheel\u003cbr\u003eCtrl++/Ctrl+-\u003cbr\u003e2-finger Pinch\u003cbr\u003e\u003cbr\u003e\u003cu\u003ePan:\u003c/u\u003e\u003cbr\u003eMiddleMouse\u003cbr\u003e2-finger Pan" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 b/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 new file mode 100644 index 00000000..3d166843 --- /dev/null +++ b/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 @@ -0,0 +1,41 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner=:scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + good_read AS good_read_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + /* Percents: */ + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf b/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf new file mode 100644 index 00000000..b79dbba3 --- /dev/null +++ b/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf @@ -0,0 +1,3450 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "MCM01" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "expression": "\"http://127.0.0.1:5500/MCM01.svg?var\" + toMillis(now(1000))" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "height": 1080, + "width": 1920 + }, + "props": { + "direction": "column", + "style": { + "pointerEvents": "none" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm02" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "height": 36, + "width": 124, + "x": 1686, + "y": 811 + }, + "props": { + "primary": false, + "text": "MCM02 - NC SORTER" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 30, + "width": 30, + "x": 30, + "y": 323 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 30, + "width": 30, + "x": 806, + "y": 372 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_1" + }, + "position": { + "height": 30, + "width": 30, + "x": 1482, + "y": 660 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_2" + }, + "position": { + "height": 30, + "width": 30, + "x": 1819, + "y": 339 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 62, + "y": 577 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 269, + "y": 683 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 343, + "y": 268 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 1880.99, + "y": 609 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SS2" + }, + "position": { + "height": 20, + "width": 35, + "x": 1877.99, + "y": 691 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 99, + "y": 551 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 31, + "y": 551 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 314, + "y": 271 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 387, + "y": 272 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 243, + "y": 654 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 309, + "y": 655 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/EPC/UL14_1_EPC2", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1859, + "y": 607.999 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1854, + "y": 692 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 38.4461, + "y": 416 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 64.4296, + "y": 357.997 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 93.43, + "y": 341 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 124.43, + "y": 324 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 198.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 450 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 415 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 381 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 273.43, + "y": 324 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE2" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 390.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE3" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 560.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 971.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "270deg" + }, + "width": 80, + "x": 1469.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 340 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 550 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 585 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1577.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1658.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1734.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1780.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1828.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 428 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_4" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 407 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN1_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 407 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 114, + "y": 455 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 252, + "y": 341 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 221, + "y": 455 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN1_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 221, + "y": 435 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 317, + "y": 488 + }, + "props": { + "params": { + "name": "Red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN2_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 350, + "y": 245 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 350, + "y": 225 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN4_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 254 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN4_H" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 234 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "horn", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 973, + "y": 254 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 1526, + "y": 398 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_16" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 601 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_17" + }, + "position": { + "height": 20, + "width": 20, + "x": 1793, + "y": 580 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_18" + }, + "position": { + "height": 20, + "width": 20, + "x": 1871, + "y": 581 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_19" + }, + "position": { + "height": 20, + "width": 20, + "x": 1883, + "y": 665 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.417, + "y": 460 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.42, + "y": 425 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.42, + "y": 391 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 325.42, + "y": 365 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 110.42, + "y": 429 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 115.42, + "y": 401 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 145.42, + "y": 384 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 171.42, + "y": 369 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 526.42, + "y": 303 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 1788.75, + "y": 648 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 1824.75, + "y": 648 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 101, + "y": 496 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 139, + "y": 419 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 162, + "y": 406 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 392 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 204, + "y": 364 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 312, + "y": 556 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 464 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 430 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 399 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 357, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 527, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 687, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1444, + "y": 336 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1513, + "y": 347 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1594, + "y": 479 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1601, + "y": 553 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1606, + "y": 605 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1667, + "y": 624 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1713, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1787, + "y": 628 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1838, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9B_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1742, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 31, + "y": 464 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 222, + "y": 484 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 232, + "y": 366 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 421, + "y": 361 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR3" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 276 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 973, + "y": 276 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_JR3" + }, + "position": { + "height": 20, + "width": 20, + "x": 1526, + "y": 420 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1646, + "y": 684 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1643, + "y": 625 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1787, + "y": 690 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1764, + "y": 581 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 306, + "y": 533 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 463 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 431 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 401 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 122, + "y": 496 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 138, + "y": 451 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 176, + "y": 428 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 206, + "y": 405 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_5_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 208, + "y": 343 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_5_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 378, + "y": 360 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 483, + "y": 346 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 643, + "y": 346 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1400, + "y": 336 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1476, + "y": 367 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_SIO1" + }, + "position": { + "height": 20, + "width": 40, + "x": 1592, + "y": 455 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1602, + "y": 526 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1606, + "y": 579 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1668, + "y": 599 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1713, + "y": 604 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9B_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1757, + "y": 605 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1862, + "y": 553 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1808, + "y": 604 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCM01" + }, + "position": { + "height": 30, + "width": 42, + "x": 449.64, + "y": 405 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/MCM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_DPM1" + }, + "position": { + "height": 30, + "width": 30, + "x": 269.64, + "y": 265 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_DPM1" + }, + "position": { + "height": 30, + "width": 30, + "x": 1599.64, + "y": 375 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PDP01_FIOM1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1407, + "y": 384 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN3_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 421, + "y": 340 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf b/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf new file mode 100644 index 00000000..902aeac1 --- /dev/null +++ b/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf @@ -0,0 +1,490 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "MCP" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 180, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 40, + "width": 100, + "x": 50, + "y": 15 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027MCP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CPU_Switch" + }, + "position": { + "height": 40, + "rotate": { + "angle": "135deg" + }, + "width": 40, + "x": 80, + "y": 100 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU.jsonValues" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\ttry:\n\t\tif value.Key_Run:\n\t\t\treturn \"0deg\"\n\t\telif value.Key_Rem:\n\t\t\treturn \"45deg\"\n\t\telif value.Key_Pgm:\n\t\t\treturn \"90deg\"\n\t\telse:\n\t\t\treturn \"135deg\"\n\texcept:\n\t\treturn \"135deg\"", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.elements[0].d": { + "binding": { + "config": { + "expression": "if({this.position.rotate.angle}\u003d\"135deg\",\r\n\t\"M40,40L0,0\",\r\n\t\"M40,40L0,0H20M0,0V20\"\r\n)" + }, + "overlayOptOut": true, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "elements": [ + { + "d": "M40,40L0,0", + "fill": { + "paint": "none" + }, + "stroke": { + "linecap": "square", + "paint": "#000", + "width": 5 + }, + "type": "path" + } + ], + "viewBox": "0 0 41 41" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 40, + "x": 40, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Run" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "RUN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 20, + "width": 40, + "x": 120, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Pgm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "PGM" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d b/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d new file mode 100644 index 00000000..f2595593 --- /dev/null +++ b/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d @@ -0,0 +1,233 @@ +{ + "custom": { + "plc": "", + "searchId": "value", + "state": 1, + "string": "Actuated" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Faulted" + }, + { + "input": 0, + "output": "Inactive" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 22, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "SOL", + "textStyle": { + "fontSize": 10, + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 b/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 new file mode 100644 index 00000000..ff045115 --- /dev/null +++ b/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 @@ -0,0 +1,57 @@ +{ + "custom": {}, + "params": { + "help": "Welcome to _Markdown_" + }, + "propConfig": { + "params.help": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.help" + }, + "transforms": [ + { + "code": "\treturn value.replace(\"\u003cu\u003e\", \"**\").replace(\"\u003c/u\u003e\", \"**\")", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "markdown": { + "escapeHtml": false + } + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 b/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 new file mode 100644 index 00000000..6b173246 --- /dev/null +++ b/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 @@ -0,0 +1,241 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/FMS.jsonValues" + }, + "transforms": [ + { + "code": "\treturn historian.fms.genSegmentsTable(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "segment", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Belt Section (10ft)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "fill", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Package Fill (%)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.##%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 250 + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]FlowManagement\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 b/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 new file mode 100644 index 00000000..0457a093 --- /dev/null +++ b/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 @@ -0,0 +1,169 @@ +{ + "custom": { + "alarmHighlight": "", + "areaHover": [], + "currentGraphic": "Windows/Graphics/Overview", + "demoHighlight": "", + "dexmanager": { + "config": { + "font": "bold 12px Arial", + "highlight": "#ff0" + }, + "highlight": [], + "show": { + "Beacons": false, + "ConveyorLabels": true, + "ConveyorPatterns": true, + "Conveyors": true, + "DivertPaddles": true, + "EIPs": false, + "Encoders": false, + "Estops": false, + "Gaylords": true, + "LimitSwitches": false, + "MCPs": false, + "PhotoEyes": false, + "PushButtons": false, + "Scanners": false, + "VFDs": false + } + }, + "heatmapSettings": { + "alarms": [], + "alarmsText": "", + "data": { + "$": [ + "ds", + 192, + 1602856991637 + ], + "$columns": [ + { + "data": [], + "name": "firsttime", + "type": "Date" + }, + { + "data": [], + "name": "lasttime", + "type": "Date" + }, + { + "data": [], + "name": "duration", + "type": "String" + }, + { + "data": [], + "name": "count", + "type": "Long" + }, + { + "data": [], + "name": "device", + "type": "String" + }, + { + "data": [], + "name": "description", + "type": "String" + } + ] + }, + "devices": [], + "devicesText": "", + "enabled": false, + "shifts": [], + "shiftsText": "", + "time": { + "end": "2020-07-30 00:00:00", + "start": "2020-07-29 00:00:00" + } + }, + "isMobile": false, + "timewidget": { + "endDate": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646438400000 + }, + "mode": "currentDay", + "startDate": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646352000000 + }, + "update": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646422591465 + } + } + }, + "propConfig": { + "props.auth": { + "access": "PRIVATE", + "persistent": false + }, + "props.device.accelerometer": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.identifier": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.timezone": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.type": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.userAgent": { + "access": "SYSTEM", + "persistent": false + }, + "props.gateway": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.data": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.permissionGranted": { + "access": "SYSTEM", + "persistent": false + }, + "props.host": { + "access": "SYSTEM", + "persistent": false + }, + "props.id": { + "access": "SYSTEM", + "persistent": false + }, + "props.lastActivity": { + "access": "SYSTEM", + "persistent": false + } + }, + "props": { + "address": "127.0.0.1", + "device": {}, + "geolocation": {}, + "locale": "en-US", + "timeZoneId": "Asia/Tbilisi" + } +} \ No newline at end of file diff --git a/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 b/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 new file mode 100644 index 00000000..18c7ae4c --- /dev/null +++ b/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 @@ -0,0 +1,588 @@ +{ + "custom": { + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running_status": 0, + "searchId": "value", + "state": 5, + "state_string": "Unknown" + }, + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceRunningStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 100 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "enabled": false, + "transforms": [ + { + "expression": "if({session.custom.colours}[\"state\"+{value}] \u003d null, \r\n{session.custom.colours}[\"Fallback\"],\r\n{session.custom.colours}[\"state\"+{value}])", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "id": "defs963", + "name": "defs963", + "type": "defs" + }, + { + "elements": [ + { + "d": "M 108.69378,77.205299 A 30.372795,30.372799 0 0 1 78.350262,107.57808 30.372795,30.372799 0 0 1 47.948245,77.263855 30.372795,30.372799 0 0 1 78.23315,46.832627 a 30.372795,30.372799 0 0 1 30.4604,30.255561", + "fill": { + "paint": "#00CC00" + }, + "id": "path2823", + "name": "path2823", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "miterlimit": "4", + "paint": "#000000", + "width": "2.30899" + }, + "style": { + "paintOrder": "markers fill stroke" + }, + "type": "path" + }, + { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "d": "m 308.1,277.95 c 0,35.7 -28.9,64.6 -64.6,64.6 -35.7,0 -64.6,-28.9 -64.6,-64.6 0,-35.7 28.9,-64.6 64.6,-64.6 35.7,0 64.6,28.9 64.6,64.6 z m 132.2,-161.9 c 25.8,0 46.7,20.9 46.7,46.7 v 122.4 103.8 c 0,27.5 -22.3,49.8 -49.8,49.8 H 49.8 C 22.3,438.75 0,416.45 0,388.95 v -103.9 -122.3 0 c 0,-25.8 20.9,-46.7 46.7,-46.7 h 93.4 l 4.4,-18.6 c 6.7,-28.8 32.4,-49.2 62,-49.2 h 74.1 c 29.6,0 55.3,20.4 62,49.2 l 4.3,18.6 z m -342.9,67.4 c 0,-12.9 -10.5,-23.4 -23.4,-23.4 -13,0 -23.5,10.5 -23.5,23.4 0,12.9 10.5,23.4 23.4,23.4 13,0.1 23.5,-10.4 23.5,-23.4 z m 261.3,94.5 c 0,-63.6 -51.6,-115.2 -115.2,-115.2 -63.6,0 -115.2,51.6 -115.2,115.2 0,63.6 51.6,115.2 115.2,115.2 63.6,0 115.2,-51.6 115.2,-115.2 z", + "id": "path954", + "name": "path954", + "type": "path" + } + ], + "id": "g956", + "name": "g956", + "type": "group" + } + ], + "id": "g958", + "name": "g958", + "transform": "matrix(0.10552692,0,0,0.1049851,58.573883,61.035557)", + "type": "group" + } + ], + "id": "g2695", + "name": "g2695", + "transform": "matrix(0.78290367,0,0,0.78703031,12.345936,11.651649)", + "type": "group" + } + ], + "id": "g3222", + "name": "g3222", + "transform": "matrix(0.45169465,0,0,0.44391375,-20.878644,-19.304276)", + "type": "group" + } + ], + "fill": { + "paint": "#000000" + }, + "style": {}, + "viewBox": "0 0 29.22 29.22" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_camera_jams" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "Disconnects/Device-Connected", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Disconnects/Device-Disconnected" + }, + { + "input": false, + "output": "Disconnects/Device-Connected" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "aspectRatio": "1:1", + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 b/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 new file mode 100644 index 00000000..ecf9f8d4 --- /dev/null +++ b/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 @@ -0,0 +1,23 @@ +WITH GAYLORDS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + gaylord_id AS gaylord, + SUM(count) AS total + FROM gl_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY gaylord_id + ORDER BY gaylord_id +) +SELECT + start_timestamp, + end_timestamp, + gaylord, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM GAYLORDS; \ No newline at end of file diff --git a/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 b/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 new file mode 100644 index 00000000..65016643 --- /dev/null +++ b/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 @@ -0,0 +1,4244 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 651, + "width": 1687 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "UL01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1624, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1554, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL03_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1464, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL04_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1384, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL01_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1608, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL05_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1304, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL06_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1224, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1624, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1554, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL03_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1464, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL04_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1384, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL05_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1304, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL06_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1224, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1144, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1144, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL07_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL07_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL07_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1666, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1186, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1128, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL08_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 974, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL08_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 974, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL08_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL08_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL08_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL08_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL08_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 958, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL08_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1016, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL09_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 894, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL09_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 894, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1575, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL03_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1485, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL04_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1405, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL05_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1325, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL06_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1245, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL07_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL08_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL09_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL10_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 814, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL10_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 814, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL10_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 835, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 670, + "x": 1687, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 490, + "x": 1018, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 734, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 734, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 755, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL02_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1575, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL03_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1485, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL04_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1405, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL05_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1325, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL06_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1245, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL08_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL09_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL10_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 835, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL11_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 755, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL12_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 696, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1030, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1123, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1192, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1283, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1352, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1432, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE7" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1512, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE8" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1602, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 702, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 782, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 862, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 942, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1654, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1584, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL03_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1494, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL04_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1414, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL05_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1334, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL06_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1254, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL07_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1174, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL08_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1004, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL09_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 924, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL10_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 844, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL11_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 764, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL12_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 654, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL12_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 654, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "MCP02" + }, + "position": { + "height": 20, + "width": 50, + "x": 1248, + "y": 12 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/MCP02/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1256, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 623, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL12_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL12_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1031, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1092, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL12_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1321, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1664, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1052, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1071, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_02_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 640, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_02_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 814, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL12_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL12_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 1225, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_FIO2" + }, + "position": { + "height": 15, + "width": 30, + "x": 1454, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/FIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 1194, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_02_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 661, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL12_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 638, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1052 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1052, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1321, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 623, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 640, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 640 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 814, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL12_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 542, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 622, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL12_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 684, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 490, + "x": 529, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 250, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 250, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 210, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 210, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 193, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 193, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 145, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 114, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 83, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_03_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 56, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 39, + "y": 78 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 52, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_04PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 40, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_04PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PS02_04PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 25, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_04PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL1Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1582, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 124 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL2Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1512, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 123 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL3Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1422, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 122 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL4Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1342, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 121 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL5Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1262, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 120 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL6Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1182, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 119 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL8Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 932, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 116 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL9Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 852, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 115 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL10Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 772, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 114 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL11Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 692, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 113 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL12Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 612, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 112 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL12Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 612, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_12/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL11Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 692, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL10Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 772, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL9Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 852, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_9/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL8Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 932, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL6Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1182, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL5Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1262, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL4Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1342, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL3Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1422, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL2Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1512, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL1Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1582, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL7Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1102, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 118 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL7Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1102, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UnloadLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 90, + "x": 402, + "y": 80 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Unloads" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UnloadLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 90, + "x": 402, + "y": 80 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_Total/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf b/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf new file mode 100644 index 00000000..55e76935 --- /dev/null +++ b/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FFB200" + } + } +} \ No newline at end of file diff --git a/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 b/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 new file mode 100644 index 00000000..d06c0f15 --- /dev/null +++ b/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#F00077" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 b/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 new file mode 100644 index 00000000..7061802c --- /dev/null +++ b/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 @@ -0,0 +1,313 @@ +{ + "custom": {}, + "params": { + "tab": "Active Alarms" + }, + "propConfig": { + "params.tab": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Error", + "value": [ + "Error" + ] + }, + { + "label": "Warning", + "value": [ + "Warning", + "Error" + ] + }, + { + "label": "Message", + "value": [ + "Message", + "Warning", + "Error" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "Error" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 100, + "x": "calc(100% - 335px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Min Class:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "custom": { + "pages": [ + "Active", + "History", + "HitList" + ] + }, + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttab \u003d self.page.props.path.split(\"/\")[-1]\n\t# Search for tab:\n\tfor i, page in enumerate(self.custom.pages):\n\t\tif page.lower() \u003d\u003d tab:\n\t\t\treturn i\n\t# Default value in case of not finding the tab\n\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tpage \u003d \"/alarms/\"+self.custom.pages[self.props.currentTabIndex].lower()\n\tif previousValue \u003c\u003e currentValue and self.page.props.path.lower() \u003c\u003e page.lower():\n\t\tsystem.perspective.navigate(page)" + }, + "persistent": true + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 130 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Active Alarms", + "Alarm History", + "Alarm Hit List" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 76px)", + "width": "100%", + "y": 76 + }, + "propConfig": { + "props.params.classDropdownValue": { + "binding": { + "config": { + "path": "../Dropdown.props.value" + }, + "type": "property" + }, + "persistent": true + }, + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Alarms/\"\r\n+property(\"../TabContainer.custom.pages[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "24 rows" + }, + "path": "Windows/Alarms/Active" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "params": { + "endDate": "2021-02-13 00:00:00", + "startDate": "2021-02-12 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 b/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 new file mode 100644 index 00000000..89bf26ba --- /dev/null +++ b/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 @@ -0,0 +1,1073 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 of 0" + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\tif event.column in [\"StartHour\", \"EndHour\"]:\n\t\tif int(event.value) \u003c 0 or int(event.value) \u003e 24:\n\t\t\treturn\n\telif event.column in [\"StartMinute\", \"EndMinute\"]:\n\t\tif event.value \u003c 0 or int(event.value) \u003e\u003d 60:\n\t\t\treturn\n\t# Update shifts:\n\tdata \u003d system.dataset.updateRow(self.props.data, event.row, {\n\t\tevent.column: event.value\n\t})\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Shifts" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Name", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Enabled", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "StartHour", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Start Hour" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "StartMinute", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Start Minute" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "EndHour", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "End Hour" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "EndMinute", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "End Minute" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isSunday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Sunday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isMonday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Monday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isTuesday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tuesday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isWednesday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Wednesday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isThursday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Thursday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isFriday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Friday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isSaturday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Saturday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Shifts\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tshifts \u003d self.getSibling(\"Shifts\")\n\trow \u003d shifts.props.selection.selectedRow\n\tdata \u003d system.dataset.deleteRow(shifts.props.data, row)\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Delete" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 145px)", + "y": 8 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "{../Shifts.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red" + }, + "text": "Delete Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tshifts \u003d self.getSibling(\"Shifts\")\n\tnewRow \u003d [\"\", False, 0, 0, 0, 0, False, False, False, False, False, False, False]\n\tdata \u003d system.dataset.addRow(shifts.props.data, newRow)\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_New" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 290px)", + "y": 8 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Shifts.props.data" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount() \u003c 8", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Add New" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 b/.resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 new file mode 100644 index 00000000..8a632849 Binary files /dev/null and b/.resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 differ diff --git a/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 b/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 new file mode 100644 index 00000000..19ee6d05 --- /dev/null +++ b/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 @@ -0,0 +1,26 @@ +WITH SORTERS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + "SYSTEM" AS sorter, + SUM(IF(lane_id LIKE "UL%", count, 0)) AS inducted, + SUM(IF(lane_id LIKE "CH%", count, 0)) AS sorted + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY "SYSTEM" /* Makes it so no row is returned if no rows are processed */ +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + inducted AS inducted_count, + sorted AS sorted_count, + /* PPH: */ + ROUND(inducted*pph_multiplier) AS inducted_pph, + ROUND(sorted*pph_multiplier) AS sorted_pph, + /* Percents: */ + ROUND(inducted/inducted, 4) AS inducted_percent, + ROUND(sorted/sorted, 4) AS sorted_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 b/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 new file mode 100644 index 00000000..c47d408e --- /dev/null +++ b/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 @@ -0,0 +1,457 @@ +{ + "custom": { + "disconnected": true, + "plc": "System", + "priority": 5, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Stopped" + }, + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 5, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": 5 + }, + { + "input": 1, + "output": 3 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 5 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 5 + }, + { + "input": 7, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.priority},\r\n3, \"Medium\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n0, \"Stopped\",\r\n1, \"Started\",\r\n2, \"Stopped\",\r\n3, \"Stopped\",\r\n4, \"Disabled\",\r\n5, \"Started\",\r\n6, \"Started\",\r\n7, \"Stopped\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 50 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SS_button" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#808080\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6 ,7,\r\n \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\",\r\n \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \r\n \"#FFFF00\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00CC00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#007400" + }, + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#00FF00" + }, + { + "input": 3, + "output": "#00FF00" + }, + { + "input": 4, + "output": "#007400" + }, + { + "input": 5, + "output": "#00FF00" + }, + { + "input": 6, + "output": "#00FF00" + }, + { + "input": 7, + "output": "#00FF00" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#940003", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#940003" + }, + { + "input": 1, + "output": "#940003" + }, + { + "input": 2, + "output": "#940003" + }, + { + "input": 3, + "output": "#D90000" + }, + { + "input": 4, + "output": "#940003" + }, + { + "input": 5, + "output": "#940003" + }, + { + "input": 6, + "output": "#940003" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 40 V 20 H 0 Z", + "fill": {}, + "id": "outer-rect", + "name": "outer-rect", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 c 0,3.865993 -3.134007,7 -7,7 -3.8659932,0 -7,-3.134007 -7,-7 0,-3.8659932 3.1340068,-7 7,-7 3.865993,0 7,3.1340068 7,7 z", + "fill": {}, + "id": "inner-circle", + "name": "inner-circle", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + }, + { + "d": "m 36.642136,10.376001 c 0,3.865993 -3.134007,7 -7,7 -3.865993,0 -7,-3.134007 -7,-7 0,-3.8659928 3.134007,-6.9999998 7,-6.9999998 3.865993,0 7,3.134007 7,6.9999998 z", + "fill": {}, + "id": "inner-circle-8", + "name": "inner-circle-8", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 40 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-SS-BTN\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/page-config/config.json b/BNA8/com.inductiveautomation.perspective/page-config/config.json index 1aad6983..033fa6ed 100644 --- a/BNA8/com.inductiveautomation.perspective/page-config/config.json +++ b/BNA8/com.inductiveautomation.perspective/page-config/config.json @@ -166,7 +166,7 @@ "show": "onDemand", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -182,7 +182,7 @@ "show": "visible", "size": 50, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, @@ -391,7 +391,7 @@ "show": "onDemand", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -401,13 +401,13 @@ "content": "push", "handle": "hide", "iconUrl": "", - "id": "", + "id": "header-autStand", "modal": false, "resizable": false, "show": "visible", - "size": 150, + "size": 60, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, @@ -428,7 +428,7 @@ "show": "visible", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -438,13 +438,13 @@ "content": "push", "handle": "hide", "iconUrl": "", - "id": "", + "id": "header-autStand", "modal": false, "resizable": false, "show": "visible", - "size": 150, + "size": 60, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json index 975266f7..a698d92e 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json @@ -40,8 +40,8 @@ "name": "FlexContainer" }, "position": { - "height": 1080, - "width": 1920 + "height": 1, + "width": 1 }, "props": { "direction": "column", @@ -68,10 +68,10 @@ "name": "Button" }, "position": { - "height": 36, - "width": 124, - "x": 34, - "y": 666 + "height": 0.0333, + "width": 0.0646, + "x": 0.0177, + "y": 0.6167 }, "props": { "primary": false, @@ -84,10 +84,10 @@ "name": "NCS1_1_SOL1" }, "position": { - "height": 22, - "width": 23, - "x": 331, - "y": 492 + "height": 0.0204, + "width": 0.012, + "x": 0.1724, + "y": 0.4556 }, "props": { "params": { @@ -113,10 +113,10 @@ "name": "NCS1_1_SOL2" }, "position": { - "height": 22, - "width": 23, - "x": 363, - "y": 474 + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.4389 }, "props": { "params": { @@ -142,10 +142,10 @@ "name": "NCS1_1_SOL3" }, "position": { - "height": 22, - "width": 23, - "x": 363, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.463 }, "props": { "params": { @@ -171,10 +171,10 @@ "name": "NCS1_1_SOL4" }, "position": { - "height": 22, - "width": 23, - "x": 403, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.463 }, "props": { "params": { @@ -200,10 +200,10 @@ "name": "NCS1_1_SOL5" }, "position": { - "height": 22, - "width": 23, - "x": 403, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.4398 }, "props": { "params": { @@ -229,10 +229,10 @@ "name": "NCS1_1_SOL6" }, "position": { - "height": 22, - "width": 23, - "x": 443, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.463 }, "props": { "params": { @@ -258,10 +258,10 @@ "name": "NCS1_1_SOL7" }, "position": { - "height": 22, - "width": 23, - "x": 443, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.4398 }, "props": { "params": { @@ -287,10 +287,10 @@ "name": "NCS1_1_SOL8" }, "position": { - "height": 22, - "width": 23, - "x": 483, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.463 }, "props": { "params": { @@ -316,10 +316,10 @@ "name": "NCS1_1_SOL9" }, "position": { - "height": 22, - "width": 23, - "x": 483, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.4398 }, "props": { "params": { @@ -345,10 +345,10 @@ "name": "NCS1_1_SOL10" }, "position": { - "height": 22, - "width": 23, - "x": 523, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.463 }, "props": { "params": { @@ -374,10 +374,10 @@ "name": "NCS1_1_SOL11" }, "position": { - "height": 22, - "width": 23, - "x": 523, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.4398 }, "props": { "params": { @@ -403,10 +403,10 @@ "name": "NCS1_1_SOL12" }, "position": { - "height": 22, - "width": 23, - "x": 557, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.463 }, "props": { "params": { @@ -432,10 +432,10 @@ "name": "NCS1_1_SOL13" }, "position": { - "height": 22, - "width": 23, - "x": 557, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.4398 }, "props": { "params": { @@ -461,10 +461,10 @@ "name": "NCS1_1_SOL14" }, "position": { - "height": 22, - "width": 23, - "x": 590, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.463 }, "props": { "params": { @@ -490,10 +490,10 @@ "name": "NCS1_1_SOL15" }, "position": { - "height": 22, - "width": 23, - "x": 590, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.4398 }, "props": { "params": { @@ -519,10 +519,10 @@ "name": "NCS1_1_SOL16" }, "position": { - "height": 22, - "width": 23, - "x": 630, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.4713 }, "props": { "params": { @@ -548,10 +548,10 @@ "name": "NCS1_1_SOL17" }, "position": { - "height": 22, - "width": 23, - "x": 630, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.45 }, "props": { "params": { @@ -577,10 +577,10 @@ "name": "NCS1_1_SOL18" }, "position": { - "height": 22, - "width": 23, - "x": 663, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.4713 }, "props": { "params": { @@ -606,10 +606,10 @@ "name": "NCS1_1_SOL19" }, "position": { - "height": 22, - "width": 23, - "x": 663, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.45 }, "props": { "params": { @@ -635,10 +635,10 @@ "name": "NCS1_1_SOL20" }, "position": { - "height": 22, - "width": 23, - "x": 703, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.463 }, "props": { "params": { @@ -664,10 +664,10 @@ "name": "NCS1_1_SOL21" }, "position": { - "height": 22, - "width": 23, - "x": 703, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.4398 }, "props": { "params": { @@ -693,10 +693,10 @@ "name": "NCS1_1_SOL22" }, "position": { - "height": 22, - "width": 23, - "x": 743, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.463 }, "props": { "params": { @@ -722,10 +722,10 @@ "name": "NCS1_1_SOL23" }, "position": { - "height": 22, - "width": 23, - "x": 743, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.4398 }, "props": { "params": { @@ -751,10 +751,10 @@ "name": "NCS1_1_SOL24" }, "position": { - "height": 22, - "width": 23, - "x": 783, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.463 }, "props": { "params": { @@ -780,10 +780,10 @@ "name": "NCS1_1_SOL25" }, "position": { - "height": 22, - "width": 23, - "x": 783, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.4398 }, "props": { "params": { @@ -809,10 +809,10 @@ "name": "NCS1_1_SOL26" }, "position": { - "height": 22, - "width": 23, - "x": 823, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.463 }, "props": { "params": { @@ -838,10 +838,10 @@ "name": "NCS1_1_SOL27" }, "position": { - "height": 22, - "width": 23, - "x": 823, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.4398 }, "props": { "params": { @@ -867,10 +867,10 @@ "name": "NCS1_1_SOL28" }, "position": { - "height": 22, - "width": 23, - "x": 870, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.463 }, "props": { "params": { @@ -896,10 +896,10 @@ "name": "NCS1_1_SOL29" }, "position": { - "height": 22, - "width": 23, - "x": 870, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.4398 }, "props": { "params": { @@ -925,10 +925,10 @@ "name": "NCS1_1_SOL30" }, "position": { - "height": 22, - "width": 23, - "x": 907, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.463 }, "props": { "params": { @@ -954,10 +954,10 @@ "name": "NCS1_1_SOL31" }, "position": { - "height": 22, - "width": 23, - "x": 907, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.4398 }, "props": { "params": { @@ -983,10 +983,10 @@ "name": "NCS1_1_SOL32" }, "position": { - "height": 22, - "width": 23, - "x": 947, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.463 }, "props": { "params": { @@ -1012,10 +1012,10 @@ "name": "NCS1_1_SOL33" }, "position": { - "height": 22, - "width": 23, - "x": 947, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.4398 }, "props": { "params": { @@ -1041,10 +1041,10 @@ "name": "NCS1_1_SOL34" }, "position": { - "height": 22, - "width": 23, - "x": 987, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.463 }, "props": { "params": { @@ -1070,10 +1070,10 @@ "name": "NCS1_1_SOL35" }, "position": { - "height": 22, - "width": 23, - "x": 987, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.4398 }, "props": { "params": { @@ -1099,10 +1099,10 @@ "name": "NCS1_1_SOL36" }, "position": { - "height": 22, - "width": 23, - "x": 1027, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.463 }, "props": { "params": { @@ -1128,10 +1128,10 @@ "name": "NCS1_1_SOL37" }, "position": { - "height": 22, - "width": 23, - "x": 1027, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.4398 }, "props": { "params": { @@ -1157,10 +1157,10 @@ "name": "NCS1_1_SOL38" }, "position": { - "height": 22, - "width": 23, - "x": 1060, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.463 }, "props": { "params": { @@ -1186,10 +1186,10 @@ "name": "NCS1_1_SOL39" }, "position": { - "height": 22, - "width": 23, - "x": 1060, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.4398 }, "props": { "params": { @@ -1215,10 +1215,10 @@ "name": "NCS1_1_SOL40" }, "position": { - "height": 22, - "width": 23, - "x": 1094, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.463 }, "props": { "params": { @@ -1244,10 +1244,10 @@ "name": "NCS1_1_SOL41" }, "position": { - "height": 22, - "width": 23, - "x": 1094, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.4398 }, "props": { "params": { @@ -1273,10 +1273,10 @@ "name": "NCS1_1_SOL42" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 }, "props": { "params": { @@ -1302,10 +1302,10 @@ "name": "NCS1_1_SOL43" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 }, "props": { "params": { @@ -1331,10 +1331,10 @@ "name": "NCS1_1_SOL44" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 }, "props": { "params": { @@ -1360,10 +1360,10 @@ "name": "NCS1_1_SOL45" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 }, "props": { "params": { @@ -1389,10 +1389,10 @@ "name": "NCS1_1_SOL46" }, "position": { - "height": 22, - "width": 23, - "x": 1174, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.4713 }, "props": { "params": { @@ -1418,10 +1418,10 @@ "name": "NCS1_1_SOL47" }, "position": { - "height": 22, - "width": 23, - "x": 1174, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.45 }, "props": { "params": { @@ -1447,10 +1447,10 @@ "name": "NCS1_1_SOL48" }, "position": { - "height": 22, - "width": 23, - "x": 1214, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.4713 }, "props": { "params": { @@ -1476,10 +1476,10 @@ "name": "NCS1_1_SOL49" }, "position": { - "height": 22, - "width": 23, - "x": 1214, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.45 }, "props": { "params": { @@ -1505,10 +1505,10 @@ "name": "NCS1_1_SOL50" }, "position": { - "height": 22, - "width": 23, - "x": 1246, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.463 }, "props": { "params": { @@ -1534,10 +1534,10 @@ "name": "NCS1_1_SOL51" }, "position": { - "height": 22, - "width": 23, - "x": 1246, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.4398 }, "props": { "params": { @@ -1563,10 +1563,10 @@ "name": "NCS1_1_SOL52" }, "position": { - "height": 22, - "width": 23, - "x": 1279, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.463 }, "props": { "params": { @@ -1592,10 +1592,10 @@ "name": "NCS1_1_SOL53" }, "position": { - "height": 22, - "width": 23, - "x": 1279, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.4398 }, "props": { "params": { @@ -1621,10 +1621,10 @@ "name": "NCS1_1_SOL54" }, "position": { - "height": 22, - "width": 23, - "x": 1319, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.463 }, "props": { "params": { @@ -1650,10 +1650,10 @@ "name": "NCS1_1_SOL55" }, "position": { - "height": 22, - "width": 23, - "x": 1319, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.4398 }, "props": { "params": { @@ -1679,10 +1679,10 @@ "name": "NCS1_1_SOL56" }, "position": { - "height": 22, - "width": 23, - "x": 1359, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.463 }, "props": { "params": { @@ -1708,10 +1708,10 @@ "name": "NCS1_1_SOL57" }, "position": { - "height": 22, - "width": 23, - "x": 1359, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.4398 }, "props": { "params": { @@ -1737,10 +1737,10 @@ "name": "NCS1_1_SOL58" }, "position": { - "height": 22, - "width": 23, - "x": 1399, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.463 }, "props": { "params": { @@ -1766,10 +1766,10 @@ "name": "NCS1_1_SOL59" }, "position": { - "height": 22, - "width": 23, - "x": 1399, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.4398 }, "props": { "params": { @@ -1795,10 +1795,10 @@ "name": "NCS1_1_SOL60" }, "position": { - "height": 22, - "width": 23, - "x": 1439, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.463 }, "props": { "params": { @@ -1824,10 +1824,10 @@ "name": "NCS1_1_SOL61" }, "position": { - "height": 22, - "width": 23, - "x": 1439, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.4398 }, "props": { "params": { @@ -1853,10 +1853,10 @@ "name": "NCS1_1_SOL62" }, "position": { - "height": 22, - "width": 23, - "x": 1479, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.463 }, "props": { "params": { @@ -1882,10 +1882,10 @@ "name": "NCS1_1_SOL63" }, "position": { - "height": 22, - "width": 23, - "x": 1479, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.4398 }, "props": { "params": { @@ -1911,10 +1911,10 @@ "name": "NCS1_1_SOL64" }, "position": { - "height": 22, - "width": 23, - "x": 1519, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.463 }, "props": { "params": { @@ -1940,10 +1940,10 @@ "name": "NCS1_1_SOL65" }, "position": { - "height": 22, - "width": 23, - "x": 1519, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.4398 }, "props": { "params": { @@ -1969,10 +1969,10 @@ "name": "NCS1_1_SOL66" }, "position": { - "height": 22, - "width": 23, - "x": 1559, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.463 }, "props": { "params": { @@ -1998,10 +1998,10 @@ "name": "NCS1_1_SOL67" }, "position": { - "height": 22, - "width": 23, - "x": 1559, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.4398 }, "props": { "params": { @@ -2027,10 +2027,10 @@ "name": "NCS1_1_SOL68" }, "position": { - "height": 22, - "width": 23, - "x": 1599, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.463 }, "props": { "params": { @@ -2056,10 +2056,10 @@ "name": "NCS1_1_SOL69" }, "position": { - "height": 22, - "width": 23, - "x": 1599, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.4398 }, "props": { "params": { @@ -2085,10 +2085,10 @@ "name": "NCS1_1_SOL70" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 }, "props": { "params": { @@ -2114,10 +2114,10 @@ "name": "NCS1_1_SOL71" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 }, "props": { "params": { @@ -2143,10 +2143,10 @@ "name": "NCS1_1_SOL72" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 }, "props": { "params": { @@ -2172,10 +2172,10 @@ "name": "NCS1_1_SOL73" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 }, "props": { "params": { @@ -2201,10 +2201,10 @@ "name": "NCS1_1_SOL74" }, "position": { - "height": 22, - "width": 23, - "x": 1671, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.4398 }, "props": { "params": { @@ -2230,10 +2230,10 @@ "name": "NCS1_1_SOL75" }, "position": { - "height": 22, - "width": 23, - "x": 1671, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.463 }, "props": { "params": { @@ -2259,10 +2259,10 @@ "name": "NCS1_1_SOL77" }, "position": { - "height": 22, - "width": 23, - "x": 1703, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.463 }, "props": { "params": { @@ -2288,10 +2288,10 @@ "name": "NCS1_1_SOL78" }, "position": { - "height": 22, - "width": 23, - "x": 1735, - "y": 490 + "height": 0.0204, + "width": 0.012, + "x": 0.9036, + "y": 0.4537 }, "props": { "params": { @@ -2317,10 +2317,10 @@ "name": "NCS1_1_SOL76" }, "position": { - "height": 22, - "width": 23, - "x": 1703, - "y": 474 + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.4389 }, "props": { "params": { @@ -2346,10 +2346,10 @@ "name": "PS3_12_EPC2" }, "position": { - "height": 30, - "width": 30, - "x": 21, - "y": 543 + "height": 0.0278, + "width": 0.0156, + "x": 0.0109, + "y": 0.5028 }, "props": { "params": { @@ -2375,10 +2375,10 @@ "name": "PS3_12_EPC1" }, "position": { - "height": 30, - "width": 30, - "x": 19, - "y": 424 + "height": 0.0278, + "width": 0.0156, + "x": 0.0099, + "y": 0.3926 }, "props": { "params": { @@ -2404,10 +2404,10 @@ "name": "S03_1_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 366, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.1906, + "y": 0.5065 }, "props": { "params": { @@ -2433,10 +2433,10 @@ "name": "PS3_14_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 263, - "y": 409 + "height": 0.0185, + "width": 0.0208, + "x": 0.137, + "y": 0.3787 }, "props": { "params": { @@ -2462,10 +2462,10 @@ "name": "NCS1_1_SS1" }, "position": { - "height": 20, - "width": 40, - "x": 1782, - "y": 434 + "height": 0.0185, + "width": 0.0208, + "x": 0.9281, + "y": 0.4019 }, "props": { "params": { @@ -2491,10 +2491,10 @@ "name": "S03_CH101_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 412, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2146, + "y": 0.3944 }, "props": { "params": { @@ -2520,10 +2520,10 @@ "name": "Camera" }, "position": { - "height": 30, - "width": 40, - "x": 1860, - "y": 548 + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 }, "props": { "params": { @@ -2552,10 +2552,10 @@ "name": "PS3_12_JR2" }, "position": { - "height": 25, - "width": 25, - "x": 152, - "y": 540 + "height": 0.0231, + "width": 0.013, + "x": 0.0792, + "y": 0.5 }, "props": { "params": { @@ -2581,10 +2581,10 @@ "name": "PS3_12_JR1" }, "position": { - "height": 25, - "width": 25, - "x": 154, - "y": 431 + "height": 0.0231, + "width": 0.013, + "x": 0.0802, + "y": 0.3991 }, "props": { "params": { @@ -2610,10 +2610,10 @@ "name": "PS3_12_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 121, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.063, + "y": 0.3981 }, "props": { "params": { @@ -2630,10 +2630,10 @@ "name": "PS3_13_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 205, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.1068, + "y": 0.3981 }, "props": { "params": { @@ -2650,10 +2650,10 @@ "name": "PS3_14_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 271, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.1411, + "y": 0.3981 }, "props": { "params": { @@ -2670,10 +2670,10 @@ "name": "PS3_13_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 198, - "y": 409 + "height": 0.0185, + "width": 0.0208, + "x": 0.1031, + "y": 0.3787 }, "props": { "params": { @@ -2699,10 +2699,10 @@ "name": "PS3_12_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 80, - "y": 432 + "height": 0.0185, + "width": 0.0208, + "x": 0.0417, + "y": 0.4 }, "props": { "params": { @@ -2728,10 +2728,10 @@ "name": "PS3_12_BCN1_A" }, "position": { - "height": 20, - "width": 20, - "x": 157, - "y": 408 + "height": 0.0185, + "width": 0.0104, + "x": 0.0818, + "y": 0.3778 }, "props": { "params": { @@ -2758,10 +2758,10 @@ "name": "PS3_13_ENW1" }, "position": { - "height": 25, - "width": 25, - "x": 203, - "y": 491 + "height": 0.0231, + "width": 0.013, + "x": 0.1057, + "y": 0.4546 }, "props": { "params": { @@ -2778,10 +2778,10 @@ "name": "PS3_14_ENW1" }, "position": { - "height": 25, - "width": 25, - "x": 263, - "y": 491 + "height": 0.0231, + "width": 0.013, + "x": 0.137, + "y": 0.4546 }, "props": { "params": { @@ -2798,10 +2798,10 @@ "name": "S03_1_FIOM2" }, "position": { - "height": 20, - "width": 40, - "x": 506, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.2635, + "y": 0.5065 }, "props": { "params": { @@ -2827,10 +2827,10 @@ "name": "S03_1_FIOM3" }, "position": { - "height": 20, - "width": 40, - "x": 609, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.3172, + "y": 0.5065 }, "props": { "params": { @@ -2856,10 +2856,10 @@ "name": "S03_1_FIOM5" }, "position": { - "height": 20, - "width": 40, - "x": 975, - "y": 570 + "height": 0.0185, + "width": 0.0208, + "x": 0.5078, + "y": 0.5278 }, "props": { "params": { @@ -2885,10 +2885,10 @@ "name": "S03_1_FIOM4" }, "position": { - "height": 20, - "width": 40, - "x": 768, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.4, + "y": 0.525 }, "props": { "params": { @@ -2914,10 +2914,10 @@ "name": "S03_1_FIOM6" }, "position": { - "height": 20, - "width": 40, - "x": 1113, - "y": 569 + "height": 0.0185, + "width": 0.0208, + "x": 0.5797, + "y": 0.5269 }, "props": { "params": { @@ -2943,10 +2943,10 @@ "name": "S03_1_FIOM7" }, "position": { - "height": 20, - "width": 40, - "x": 1258, - "y": 568 + "height": 0.0185, + "width": 0.0208, + "x": 0.6552, + "y": 0.5259 }, "props": { "params": { @@ -2972,10 +2972,10 @@ "name": "S03_1_FIOM8" }, "position": { - "height": 20, - "width": 40, - "x": 1402, - "y": 568 + "height": 0.0185, + "width": 0.0208, + "x": 0.7302, + "y": 0.5259 }, "props": { "params": { @@ -3001,10 +3001,10 @@ "name": "S03_1_FIOM9" }, "position": { - "height": 20, - "width": 40, - "x": 1540, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.8021, + "y": 0.525 }, "props": { "params": { @@ -3030,10 +3030,10 @@ "name": "S03_CH101_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 446, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.2323, + "y": 0.2296 }, "props": { "params": { @@ -3059,10 +3059,10 @@ "name": "S03_CH103_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 518, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.2698, + "y": 0.2296 }, "props": { "params": { @@ -3088,10 +3088,10 @@ "name": "S03_CH105_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 587, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.3057, + "y": 0.2296 }, "props": { "params": { @@ -3117,10 +3117,10 @@ "name": "S03_CH107_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 708, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.3688, + "y": 0.2296 }, "props": { "params": { @@ -3146,10 +3146,10 @@ "name": "S03_CH109_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 780, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.4063, + "y": 0.2296 }, "props": { "params": { @@ -3175,10 +3175,10 @@ "name": "S03_CH111_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 851, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.4432, + "y": 0.2296 }, "props": { "params": { @@ -3204,10 +3204,10 @@ "name": "S03_CH113_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 994, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5177, + "y": 0.2296 }, "props": { "params": { @@ -3233,10 +3233,10 @@ "name": "S03_CH115_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1060, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5521, + "y": 0.2296 }, "props": { "params": { @@ -3262,10 +3262,10 @@ "name": "S03_CH117_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1132, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5896, + "y": 0.2296 }, "props": { "params": { @@ -3291,10 +3291,10 @@ "name": "S03_CH119_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1265, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.6589, + "y": 0.2296 }, "props": { "params": { @@ -3320,10 +3320,10 @@ "name": "S03_CH121_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1336, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.6958, + "y": 0.2296 }, "props": { "params": { @@ -3349,10 +3349,10 @@ "name": "S03_CH123_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1411, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.7349, + "y": 0.2296 }, "props": { "params": { @@ -3378,10 +3378,10 @@ "name": "S03_CH125_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1543, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8036, + "y": 0.2296 }, "props": { "params": { @@ -3407,10 +3407,10 @@ "name": "S03_CH127_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1621, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8443, + "y": 0.2296 }, "props": { "params": { @@ -3436,10 +3436,10 @@ "name": "S03_CH129_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1693, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8818, + "y": 0.2296 }, "props": { "params": { @@ -3465,10 +3465,10 @@ "name": "S03_CH130_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1692, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8812, + "y": 0.6722 }, "props": { "params": { @@ -3494,10 +3494,10 @@ "name": "S03_CH128_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1617, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8422, + "y": 0.6722 }, "props": { "params": { @@ -3523,10 +3523,10 @@ "name": "S03_CH126_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1547, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8057, + "y": 0.6722 }, "props": { "params": { @@ -3552,10 +3552,10 @@ "name": "S03_CH124_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1401, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.7297, + "y": 0.6722 }, "props": { "params": { @@ -3581,10 +3581,10 @@ "name": "S03_CH122_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1322, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.6885, + "y": 0.6722 }, "props": { "params": { @@ -3610,10 +3610,10 @@ "name": "S03_CH120_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1256, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.6542, + "y": 0.6722 }, "props": { "params": { @@ -3639,10 +3639,10 @@ "name": "S03_CH118_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1116, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.5813, + "y": 0.6722 }, "props": { "params": { @@ -3668,10 +3668,10 @@ "name": "S03_CH116_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1054, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.549, + "y": 0.6722 }, "props": { "params": { @@ -3697,10 +3697,10 @@ "name": "S03_CH114_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 982, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.5115, + "y": 0.6722 }, "props": { "params": { @@ -3726,10 +3726,10 @@ "name": "S03_CH112_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 852, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.4437, + "y": 0.6722 }, "props": { "params": { @@ -3755,10 +3755,10 @@ "name": "S03_CH110_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 781, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.4068, + "y": 0.6722 }, "props": { "params": { @@ -3784,10 +3784,10 @@ "name": "S03_CH108_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 707, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.3682, + "y": 0.6722 }, "props": { "params": { @@ -3813,10 +3813,10 @@ "name": "S03_CH108_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 649 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.6009 }, "props": { "params": { @@ -3843,10 +3843,10 @@ "name": "S03_CH108_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 631 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5843 }, "props": { "params": { @@ -3873,10 +3873,10 @@ "name": "S03_CH108_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 613 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5676 }, "props": { "params": { @@ -3903,10 +3903,10 @@ "name": "S03_CH110_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 643 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5954 }, "props": { "params": { @@ -3933,10 +3933,10 @@ "name": "S03_CH110_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 623 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5769 }, "props": { "params": { @@ -3963,10 +3963,10 @@ "name": "S03_CH112_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5972 }, "props": { "params": { @@ -3993,10 +3993,10 @@ "name": "S03_CH112_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5787 }, "props": { "params": { @@ -4023,10 +4023,10 @@ "name": "S03_CH114_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 648 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.6 }, "props": { "params": { @@ -4053,10 +4053,10 @@ "name": "S03_CH114_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 630 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5833 }, "props": { "params": { @@ -4083,10 +4083,10 @@ "name": "S03_CH114_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 612 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5667 }, "props": { "params": { @@ -4113,10 +4113,10 @@ "name": "S03_CH116_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 646 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5981 }, "props": { "params": { @@ -4143,10 +4143,10 @@ "name": "S03_CH116_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5796 }, "props": { "params": { @@ -4173,10 +4173,10 @@ "name": "S03_CH118_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 644 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5963 }, "props": { "params": { @@ -4203,10 +4203,10 @@ "name": "S03_CH118_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5787 }, "props": { "params": { @@ -4233,10 +4233,10 @@ "name": "S03_CH120_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 612 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5667 }, "props": { "params": { @@ -4263,10 +4263,10 @@ "name": "S03_CH120_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 630 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5833 }, "props": { "params": { @@ -4293,10 +4293,10 @@ "name": "S03_CH120_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 648 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.6 }, "props": { "params": { @@ -4323,10 +4323,10 @@ "name": "S03_CH122_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1317, - "y": 627 + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5806 }, "props": { "params": { @@ -4353,10 +4353,10 @@ "name": "S03_CH122_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1317, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5972 }, "props": { "params": { @@ -4383,10 +4383,10 @@ "name": "S03_CH124_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5796 }, "props": { "params": { @@ -4413,10 +4413,10 @@ "name": "S03_CH124_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5972 }, "props": { "params": { @@ -4443,10 +4443,10 @@ "name": "S03_CH126_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 608 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.563 }, "props": { "params": { @@ -4473,10 +4473,10 @@ "name": "S03_CH126_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5796 }, "props": { "params": { @@ -4503,10 +4503,10 @@ "name": "S03_CH126_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 644 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5963 }, "props": { "params": { @@ -4533,10 +4533,10 @@ "name": "S03_CH128_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1597, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5787 }, "props": { "params": { @@ -4563,10 +4563,10 @@ "name": "S03_CH128_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1597, - "y": 646 + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5981 }, "props": { "params": { @@ -4593,10 +4593,10 @@ "name": "S03_CH130_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1669, - "y": 622 + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5759 }, "props": { "params": { @@ -4623,10 +4623,10 @@ "name": "S03_CH130_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1669, - "y": 643 + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5954 }, "props": { "params": { @@ -4653,10 +4653,10 @@ "name": "S03_CH101_BNC1_B" }, "position": { - "height": 18.99, - "width": 20, - "x": 412, - "y": 333 + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3083 }, "props": { "params": { @@ -4683,10 +4683,10 @@ "name": "S03_CH101_BNC1_A" }, "position": { - "height": 18.99, - "width": 20, - "x": 412, - "y": 350.09 + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3242 }, "props": { "params": { @@ -4713,10 +4713,10 @@ "name": "S03_CH103_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 487, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3157 }, "props": { "params": { @@ -4743,10 +4743,10 @@ "name": "S03_CH101_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 412, - "y": 365 + "height": 0.0185, + "width": 0.0104, + "x": 0.2146, + "y": 0.338 }, "props": { "params": { @@ -4773,10 +4773,10 @@ "name": "S03_CH103_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 487, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3343 }, "props": { "params": { @@ -4803,10 +4803,10 @@ "name": "S03_CH105_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 559, - "y": 358 + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.3315 }, "props": { "params": { @@ -4833,10 +4833,10 @@ "name": "S03_CH105_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 559, - "y": 338 + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.313 }, "props": { "params": { @@ -4863,10 +4863,10 @@ "name": "S03_CH107_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 331 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3065 }, "props": { "params": { @@ -4893,10 +4893,10 @@ "name": "S03_CH107_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 349 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3231 }, "props": { "params": { @@ -4923,10 +4923,10 @@ "name": "S03_CH109_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 339 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3139 }, "props": { "params": { @@ -4953,10 +4953,10 @@ "name": "S03_CH107_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3398 }, "props": { "params": { @@ -4983,10 +4983,10 @@ "name": "S03_CH109_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 359 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3324 }, "props": { "params": { @@ -5013,10 +5013,10 @@ "name": "S03_CH111_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 362 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3352 }, "props": { "params": { @@ -5043,10 +5043,10 @@ "name": "S03_CH111_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 342 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3167 }, "props": { "params": { @@ -5073,10 +5073,10 @@ "name": "S03_CH113_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 331 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3065 }, "props": { "params": { @@ -5103,10 +5103,10 @@ "name": "S03_CH113_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 349 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3231 }, "props": { "params": { @@ -5133,10 +5133,10 @@ "name": "S03_CH115_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3157 }, "props": { "params": { @@ -5163,10 +5163,10 @@ "name": "S03_CH113_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3398 }, "props": { "params": { @@ -5193,10 +5193,10 @@ "name": "S03_CH115_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3343 }, "props": { "params": { @@ -5223,10 +5223,10 @@ "name": "S03_CH117_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3343 }, "props": { "params": { @@ -5253,10 +5253,10 @@ "name": "S03_CH117_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3157 }, "props": { "params": { @@ -5283,10 +5283,10 @@ "name": "S03_CH119_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 332 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3074 }, "props": { "params": { @@ -5313,10 +5313,10 @@ "name": "S03_CH119_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 350 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3241 }, "props": { "params": { @@ -5343,10 +5343,10 @@ "name": "S03_CH121_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1318, - "y": 343 + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3176 }, "props": { "params": { @@ -5373,10 +5373,10 @@ "name": "S03_CH119_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3407 }, "props": { "params": { @@ -5403,10 +5403,10 @@ "name": "S03_CH121_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1318, - "y": 363 + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3361 }, "props": { "params": { @@ -5433,10 +5433,10 @@ "name": "S03_CH123_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 363 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3361 }, "props": { "params": { @@ -5463,10 +5463,10 @@ "name": "S03_CH123_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 343 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3176 }, "props": { "params": { @@ -5493,10 +5493,10 @@ "name": "S03_CH125_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 332 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3074 }, "props": { "params": { @@ -5523,10 +5523,10 @@ "name": "S03_CH125_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 350 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3241 }, "props": { "params": { @@ -5553,10 +5553,10 @@ "name": "S03_CH127_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1600, - "y": 348 + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3222 }, "props": { "params": { @@ -5583,10 +5583,10 @@ "name": "S03_CH125_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3407 }, "props": { "params": { @@ -5613,10 +5613,10 @@ "name": "S03_CH127_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1600, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3407 }, "props": { "params": { @@ -5643,10 +5643,10 @@ "name": "S03_CH129_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1672, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3407 }, "props": { "params": { @@ -5673,10 +5673,10 @@ "name": "S03_CH129_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1672, - "y": 348 + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3222 }, "props": { "params": { @@ -5703,10 +5703,10 @@ "name": "NCS1_1_EPC1" }, "position": { - "height": 30, - "width": 30, - "x": 1745.5, - "y": 428.5 + "height": 0.0278, + "width": 0.0156, + "x": 0.9091, + "y": 0.3968 }, "props": { "params": { @@ -5732,10 +5732,10 @@ "name": "NCS1_1_EPC2" }, "position": { - "height": 30, - "width": 30, - "x": 1746.5, - "y": 542.5 + "height": 0.0278, + "width": 0.0156, + "x": 0.9096, + "y": 0.5023 }, "props": { "params": { @@ -5761,10 +5761,10 @@ "name": "Beacon_63" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 403 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3731 }, "props": { "params": { @@ -5791,10 +5791,10 @@ "name": "NCS1_1_BNC1_R" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 385 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3565 }, "props": { "params": { @@ -5821,10 +5821,10 @@ "name": "NCS1_1_BNC1_H" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3398 }, "props": { "params": { @@ -5851,10 +5851,10 @@ "name": "S03_1_JR1" }, "position": { - "height": 25, - "width": 25, - "x": 370, - "y": 413 + "height": 0.0231, + "width": 0.013, + "x": 0.1927, + "y": 0.3824 }, "props": { "params": { @@ -5880,10 +5880,10 @@ "name": "S03_1_JR3" }, "position": { - "height": 25, - "width": 25, - "x": 651, - "y": 416 + "height": 0.0231, + "width": 0.013, + "x": 0.3391, + "y": 0.3852 }, "props": { "params": { @@ -5909,10 +5909,10 @@ "name": "S03_1_JR5" }, "position": { - "height": 25, - "width": 25, - "x": 912, - "y": 419 + "height": 0.0231, + "width": 0.013, + "x": 0.475, + "y": 0.388 }, "props": { "params": { @@ -5938,10 +5938,10 @@ "name": "S03_1_JR7" }, "position": { - "height": 25, - "width": 25, - "x": 1192, - "y": 422 + "height": 0.0231, + "width": 0.013, + "x": 0.6208, + "y": 0.3907 }, "props": { "params": { @@ -5967,10 +5967,10 @@ "name": "S03_1_JR9" }, "position": { - "height": 25, - "width": 25, - "x": 1478, - "y": 422 + "height": 0.0231, + "width": 0.013, + "x": 0.7698, + "y": 0.3907 }, "props": { "params": { @@ -5996,10 +5996,10 @@ "name": "S03_1_JR4" }, "position": { - "height": 25, - "width": 25, - "x": 657, - "y": 557 + "height": 0.0231, + "width": 0.013, + "x": 0.3422, + "y": 0.5157 }, "props": { "params": { @@ -6025,10 +6025,10 @@ "name": "S03_1_JR6" }, "position": { - "height": 25, - "width": 25, - "x": 932, - "y": 555 + "height": 0.0231, + "width": 0.013, + "x": 0.4854, + "y": 0.5139 }, "props": { "params": { @@ -6054,10 +6054,10 @@ "name": "S03_1_JR8" }, "position": { - "height": 25, - "width": 25, - "x": 1212, - "y": 554 + "height": 0.0231, + "width": 0.013, + "x": 0.6312, + "y": 0.513 }, "props": { "params": { @@ -6083,10 +6083,10 @@ "name": "S03_1_JR10" }, "position": { - "height": 25, - "width": 25, - "x": 1491, - "y": 552 + "height": 0.0231, + "width": 0.013, + "x": 0.7766, + "y": 0.5111 }, "props": { "params": { @@ -6112,10 +6112,10 @@ "name": "S03_CH103_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 504, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.2625, + "y": 0.3722 }, "props": { "params": { @@ -6141,10 +6141,10 @@ "name": "S03_CH109_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 769, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.4005, + "y": 0.3722 }, "props": { "params": { @@ -6170,10 +6170,10 @@ "name": "S03_CH115_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1043, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.3722 }, "props": { "params": { @@ -6199,10 +6199,10 @@ "name": "S03_CH121_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1256, - "y": 404 + "height": 0.0185, + "width": 0.0208, + "x": 0.6542, + "y": 0.3741 }, "props": { "params": { @@ -6228,10 +6228,10 @@ "name": "S03_CH127_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1607, - "y": 404 + "height": 0.0185, + "width": 0.0208, + "x": 0.837, + "y": 0.3741 }, "props": { "params": { @@ -6257,10 +6257,10 @@ "name": "S03_1_FIOM10" }, "position": { - "height": 20, - "width": 40, - "x": 1670, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.8698, + "y": 0.525 }, "props": { "params": { @@ -6286,10 +6286,10 @@ "name": "S03_1_LRPE1" }, "position": { - "height": 34, - "width": 251, - "x": 387.46, - "y": 436.99 + "height": 0.0315, + "width": 0.1307, + "x": 0.2018, + "y": 0.4046 }, "props": { "params": { @@ -6315,10 +6315,10 @@ "name": "S03_1_LRPE3" }, "position": { - "height": 40, - "width": 251, - "x": 662.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.345, + "y": 0.4009 }, "props": { "params": { @@ -6344,10 +6344,10 @@ "name": "S03_1_LRPE5" }, "position": { - "height": 40, - "width": 251, - "x": 940.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.4898, + "y": 0.4009 }, "props": { "params": { @@ -6373,10 +6373,10 @@ "name": "S03_1_LRPE7" }, "position": { - "height": 40, - "width": 251, - "x": 1220.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.6357, + "y": 0.4009 }, "props": { "params": { @@ -6402,10 +6402,10 @@ "name": "S03_1_LRPE9" }, "position": { - "height": 40, - "width": 251, - "x": 1500.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.7815, + "y": 0.4009 }, "props": { "params": { @@ -6431,10 +6431,10 @@ "name": "S03_1_LRPE4" }, "position": { - "height": 32, - "width": 251, - "x": 667.46, - "y": 523.99 + "height": 0.0296, + "width": 0.1307, + "x": 0.3476, + "y": 0.4852 }, "props": { "params": { @@ -6460,10 +6460,10 @@ "name": "S03_1_LRPE6" }, "position": { - "height": 33, - "width": 254, - "x": 939.46, - "y": 523.99 + "height": 0.0306, + "width": 0.1323, + "x": 0.4893, + "y": 0.4852 }, "props": { "params": { @@ -6489,10 +6489,10 @@ "name": "S03_1_LRPE8" }, "position": { - "height": 35, - "width": 254, - "x": 1215.46, - "y": 523.99 + "height": 0.0324, + "width": 0.1323, + "x": 0.6331, + "y": 0.4852 }, "props": { "params": { @@ -6518,10 +6518,10 @@ "name": "S03_1_LRPE10" }, "position": { - "height": 33, - "width": 259, - "x": 1500.46, - "y": 521.99 + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 }, "props": { "params": { @@ -6547,10 +6547,10 @@ "name": "S03_CH101_PE1" }, "position": { - "height": 37.97, - "width": 110, - "x": 389, - "y": 373.03 + "height": 0.0352, + "width": 0.0573, + "x": 0.2026, + "y": 0.3454 }, "props": { "params": { @@ -6576,10 +6576,10 @@ "name": "S03_CH103_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 459, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.3435 }, "props": { "params": { @@ -6605,10 +6605,10 @@ "name": "Photoeye_1" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 }, "props": { "params": { @@ -6634,10 +6634,10 @@ "name": "S03_CH105_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 }, "props": { "params": { @@ -6663,10 +6663,10 @@ "name": "S03_CH107_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 659, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.3435 }, "props": { "params": { @@ -6692,10 +6692,10 @@ "name": "S03_CH111_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 804, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.3435 }, "props": { "params": { @@ -6721,10 +6721,10 @@ "name": "S03_CH109_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 729, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.3435 }, "props": { "params": { @@ -6750,10 +6750,10 @@ "name": "S03_CH113_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 929, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.3435 }, "props": { "params": { @@ -6779,10 +6779,10 @@ "name": "S03_CH117_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1074, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.3435 }, "props": { "params": { @@ -6808,10 +6808,10 @@ "name": "S03_CH115_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 999, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.3435 }, "props": { "params": { @@ -6837,10 +6837,10 @@ "name": "S03_CH119_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1213, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.3435 }, "props": { "params": { @@ -6866,10 +6866,10 @@ "name": "S03_CH121_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.3435 }, "props": { "params": { @@ -6895,10 +6895,10 @@ "name": "S03_CH123_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.3435 }, "props": { "params": { @@ -6924,10 +6924,10 @@ "name": "S03_CH125_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1491, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.3435 }, "props": { "params": { @@ -6953,10 +6953,10 @@ "name": "S03_CH127_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1561, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.3435 }, "props": { "params": { @@ -6982,10 +6982,10 @@ "name": "S03_CH129_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1636, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.3435 }, "props": { "params": { @@ -7011,10 +7011,10 @@ "name": "S03_CH120_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1214, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.5389 }, "props": { "params": { @@ -7040,10 +7040,10 @@ "name": "S03_CH122_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.5389 }, "props": { "params": { @@ -7069,10 +7069,10 @@ "name": "S03_CH124_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.5389 }, "props": { "params": { @@ -7098,10 +7098,10 @@ "name": "S03_CH114_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 932, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.5389 }, "props": { "params": { @@ -7127,10 +7127,10 @@ "name": "S03_CH116_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1002, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.5389 }, "props": { "params": { @@ -7156,10 +7156,10 @@ "name": "S03_CH118_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1076, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.5389 }, "props": { "params": { @@ -7185,10 +7185,10 @@ "name": "S03_CH108_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 654, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.5389 }, "props": { "params": { @@ -7214,10 +7214,10 @@ "name": "S03_CH110_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 724, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.5389 }, "props": { "params": { @@ -7243,10 +7243,10 @@ "name": "S03_CH112_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 799, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.5389 }, "props": { "params": { @@ -7272,10 +7272,10 @@ "name": "S03_CH126_PE1" }, "position": { - "height": 41, - "width": 107, - "x": 1497, - "y": 582 + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.5389 }, "props": { "params": { @@ -7301,10 +7301,10 @@ "name": "S03_CH128_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1564, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.5389 }, "props": { "params": { @@ -7330,10 +7330,10 @@ "name": "S03_CH130_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1639, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.5389 }, "props": { "params": { @@ -7359,10 +7359,10 @@ "name": "Camera_0" }, "position": { - "height": 30, - "width": 40, - "x": 1860, - "y": 548 + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 }, "props": { "params": { @@ -7391,10 +7391,10 @@ "name": "NCS1_1_SS2" }, "position": { - "height": 20, - "width": 40, - "x": 1785, - "y": 545 + "height": 0.0185, + "width": 0.0208, + "x": 0.9297, + "y": 0.5046 }, "props": { "params": { @@ -7420,10 +7420,10 @@ "name": "NCS1_1_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 1747.5, - "y": 576 + "height": 0.0185, + "width": 0.0208, + "x": 0.9102, + "y": 0.5333 }, "props": { "params": { @@ -7449,10 +7449,10 @@ "name": "NCS1_1_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 1748, - "y": 599 + "height": 0.0241, + "width": 0.0135, + "x": 0.9104, + "y": 0.5546 }, "props": { "params": { @@ -7469,10 +7469,10 @@ "name": "S03_CH103_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 488, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2542, + "y": 0.3944 }, "props": { "params": { @@ -7498,10 +7498,10 @@ "name": "S03_Ch105_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 559, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2911, + "y": 0.3944 }, "props": { "params": { @@ -7527,10 +7527,10 @@ "name": "S03_Ch107_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 691, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3599, + "y": 0.3944 }, "props": { "params": { @@ -7556,10 +7556,10 @@ "name": "S03_Ch109_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 761, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3964, + "y": 0.3944 }, "props": { "params": { @@ -7585,10 +7585,10 @@ "name": "S03_CH111_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 831, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.3944 }, "props": { "params": { @@ -7614,10 +7614,10 @@ "name": "S03_CH113_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 962, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.501, + "y": 0.3944 }, "props": { "params": { @@ -7643,10 +7643,10 @@ "name": "S03_CH115_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1037, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.3944 }, "props": { "params": { @@ -7672,10 +7672,10 @@ "name": "S03_CH117_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1110, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5781, + "y": 0.3944 }, "props": { "params": { @@ -7701,10 +7701,10 @@ "name": "S03_CH119_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1247, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.3944 }, "props": { "params": { @@ -7730,10 +7730,10 @@ "name": "S03_CH121_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1320, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6875, + "y": 0.3944 }, "props": { "params": { @@ -7759,10 +7759,10 @@ "name": "S03_CH123_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1392, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.725, + "y": 0.3944 }, "props": { "params": { @@ -7788,10 +7788,10 @@ "name": "S03_CH125_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1525, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7943, + "y": 0.3944 }, "props": { "params": { @@ -7817,10 +7817,10 @@ "name": "S03_CH127_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1598, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8323, + "y": 0.3944 }, "props": { "params": { @@ -7846,10 +7846,10 @@ "name": "S03_CH129_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1670, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8698, + "y": 0.3944 }, "props": { "params": { @@ -7875,10 +7875,10 @@ "name": "S03_CH108_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 690, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3594, + "y": 0.5037 }, "props": { "params": { @@ -7904,10 +7904,10 @@ "name": "S03_CH110_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 760, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3958, + "y": 0.5037 }, "props": { "params": { @@ -7933,10 +7933,10 @@ "name": "S03_CH112_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 831, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.5037 }, "props": { "params": { @@ -7962,10 +7962,10 @@ "name": "S03_CH114_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 964, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5021, + "y": 0.5046 }, "props": { "params": { @@ -7991,10 +7991,10 @@ "name": "S03_CH116_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1037, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.5046 }, "props": { "params": { @@ -8020,10 +8020,10 @@ "name": "S03_CH118_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1106, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.576, + "y": 0.5046 }, "props": { "params": { @@ -8049,10 +8049,10 @@ "name": "S03_CH120_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1247, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.5037 }, "props": { "params": { @@ -8078,10 +8078,10 @@ "name": "S03_CH122_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1317, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6859, + "y": 0.5037 }, "props": { "params": { @@ -8107,10 +8107,10 @@ "name": "S03_CH124_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1390, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.724, + "y": 0.5037 }, "props": { "params": { @@ -8136,10 +8136,10 @@ "name": "S03_CH126_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1528, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7958, + "y": 0.5037 }, "props": { "params": { @@ -8165,10 +8165,10 @@ "name": "S03_CH128_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1601, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8339, + "y": 0.5037 }, "props": { "params": { @@ -8194,10 +8194,10 @@ "name": "S03_CH130_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1671, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8703, + "y": 0.5037 }, "props": { "params": { @@ -8223,10 +8223,10 @@ "name": "MCM02" }, "position": { - "height": 30, - "width": 42, - "x": 468, - "y": 596 + "height": 0.0278, + "width": 0.0219, + "x": 0.2437, + "y": 0.5519 }, "props": { "params": { @@ -8252,10 +8252,10 @@ "name": "NCS1_1_DPM1" }, "position": { - "height": 25, - "width": 30, - "x": 645.62, - "y": 462 + "height": 0.0231, + "width": 0.0156, + "x": 0.3363, + "y": 0.4278 }, "props": { "params": { @@ -8281,10 +8281,10 @@ "name": "NCS1_1_DPM2" }, "position": { - "height": 25, - "width": 30, - "x": 1194.62, - "y": 462 + "height": 0.0231, + "width": 0.0156, + "x": 0.6222, + "y": 0.4278 }, "props": { "params": { @@ -8310,10 +8310,10 @@ "name": "S03_CH110_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 765, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.3984, + "y": 0.5574 }, "props": { "params": { @@ -8339,10 +8339,10 @@ "name": "S03_CH116_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1043, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.5574 }, "props": { "params": { @@ -8368,10 +8368,10 @@ "name": "S03_CH122_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1324, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.6896, + "y": 0.5574 }, "props": { "params": { @@ -8397,10 +8397,10 @@ "name": "S03_CH128_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1603, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.8349, + "y": 0.5574 }, "props": { "params": { @@ -8426,10 +8426,10 @@ "name": "S03_CH101_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 443, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2307, + "y": 0.3944 }, "props": { "params": { @@ -8455,10 +8455,10 @@ "name": "S03_CH103_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 519, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2703, + "y": 0.3944 }, "props": { "params": { @@ -8484,10 +8484,10 @@ "name": "S03_Ch105_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 590, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3073, + "y": 0.3944 }, "props": { "params": { @@ -8513,10 +8513,10 @@ "name": "S03_Ch107_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 722, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.376, + "y": 0.3944 }, "props": { "params": { @@ -8542,10 +8542,10 @@ "name": "S03_Ch109_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 792, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.4125, + "y": 0.3944 }, "props": { "params": { @@ -8571,10 +8571,10 @@ "name": "S03_CH111_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 862, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.3944 }, "props": { "params": { @@ -8600,10 +8600,10 @@ "name": "S03_CH113_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 993, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5172, + "y": 0.3944 }, "props": { "params": { @@ -8629,10 +8629,10 @@ "name": "S03_CH115_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1068, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.3944 }, "props": { "params": { @@ -8658,10 +8658,10 @@ "name": "S03_CH117_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1141, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5943, + "y": 0.3944 }, "props": { "params": { @@ -8687,10 +8687,10 @@ "name": "S03_CH119_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1278, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.3944 }, "props": { "params": { @@ -8716,10 +8716,10 @@ "name": "S03_CH121_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1351, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7036, + "y": 0.3944 }, "props": { "params": { @@ -8745,10 +8745,10 @@ "name": "S03_CH123_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1423, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7411, + "y": 0.3944 }, "props": { "params": { @@ -8774,10 +8774,10 @@ "name": "S03_CH125_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1556, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8104, + "y": 0.3944 }, "props": { "params": { @@ -8803,10 +8803,10 @@ "name": "S03_CH127_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1629, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8484, + "y": 0.3944 }, "props": { "params": { @@ -8832,10 +8832,10 @@ "name": "S03_CH129_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1701, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8859, + "y": 0.3944 }, "props": { "params": { @@ -8861,10 +8861,10 @@ "name": "S03_CH108_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 721, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3755, + "y": 0.5037 }, "props": { "params": { @@ -8890,10 +8890,10 @@ "name": "S03_CH110_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 791, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.412, + "y": 0.5037 }, "props": { "params": { @@ -8919,10 +8919,10 @@ "name": "S03_CH112_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 862, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.5037 }, "props": { "params": { @@ -8948,10 +8948,10 @@ "name": "S03_CH114_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 995, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5182, + "y": 0.5046 }, "props": { "params": { @@ -8977,10 +8977,10 @@ "name": "S03_CH116_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1068, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.5046 }, "props": { "params": { @@ -9006,10 +9006,10 @@ "name": "S03_CH118_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1137, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5922, + "y": 0.5046 }, "props": { "params": { @@ -9035,10 +9035,10 @@ "name": "S03_CH120_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1278, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.5037 }, "props": { "params": { @@ -9064,10 +9064,10 @@ "name": "S03_CH122_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1348, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7021, + "y": 0.5037 }, "props": { "params": { @@ -9093,10 +9093,10 @@ "name": "S03_CH124_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1421, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7401, + "y": 0.5037 }, "props": { "params": { @@ -9122,10 +9122,10 @@ "name": "S03_CH126_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1559, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.812, + "y": 0.5037 }, "props": { "params": { @@ -9151,10 +9151,10 @@ "name": "S03_CH128_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1632, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.85, + "y": 0.5037 }, "props": { "params": { @@ -9180,10 +9180,10 @@ "name": "S03_CH130_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1702, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8865, + "y": 0.5037 }, "props": { "params": { @@ -9209,10 +9209,10 @@ "name": "S03_CH101_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 389, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2026, + "y": 0.2778 }, "props": { "params": { @@ -9238,10 +9238,10 @@ "name": "S03_CH103_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 459, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.2778 }, "props": { "params": { @@ -9267,10 +9267,10 @@ "name": "S03_CH105_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.2778 }, "props": { "params": { @@ -9296,10 +9296,10 @@ "name": "S03_CH107_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 659, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.2778 }, "props": { "params": { @@ -9325,10 +9325,10 @@ "name": "S03_CH109_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 729, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.2778 }, "props": { "params": { @@ -9354,10 +9354,10 @@ "name": "S03_CH111_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 804, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.2778 }, "props": { "params": { @@ -9383,10 +9383,10 @@ "name": "S03_CH113_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 929, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.2778 }, "props": { "params": { @@ -9412,10 +9412,10 @@ "name": "S03_CH115_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 999, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.2778 }, "props": { "params": { @@ -9441,10 +9441,10 @@ "name": "S03_CH117_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1074, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.2778 }, "props": { "params": { @@ -9470,10 +9470,10 @@ "name": "S03_CH119_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1213, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.2778 }, "props": { "params": { @@ -9499,10 +9499,10 @@ "name": "S03_CH121_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.2778 }, "props": { "params": { @@ -9528,10 +9528,10 @@ "name": "S03_CH123_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.2778 }, "props": { "params": { @@ -9557,10 +9557,10 @@ "name": "S03_CH125_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1491, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.2778 }, "props": { "params": { @@ -9586,10 +9586,10 @@ "name": "S03_CH127_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1561, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.2778 }, "props": { "params": { @@ -9615,10 +9615,10 @@ "name": "S03_CH129_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1636, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.2778 }, "props": { "params": { @@ -9644,10 +9644,10 @@ "name": "S03_CH108_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 654, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.6083 }, "props": { "params": { @@ -9673,10 +9673,10 @@ "name": "S03_CH110_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 724, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.6083 }, "props": { "params": { @@ -9702,10 +9702,10 @@ "name": "S03_CH112_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 799, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.6083 }, "props": { "params": { @@ -9731,10 +9731,10 @@ "name": "S03_CH114_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 932, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.6083 }, "props": { "params": { @@ -9760,10 +9760,10 @@ "name": "S03_CH116_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1002, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.6083 }, "props": { "params": { @@ -9789,10 +9789,10 @@ "name": "S03_CH118_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1076, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.6083 }, "props": { "params": { @@ -9818,10 +9818,10 @@ "name": "S03_CH120_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1214, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.6083 }, "props": { "params": { @@ -9847,10 +9847,10 @@ "name": "S03_CH122_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.6083 }, "props": { "params": { @@ -9876,10 +9876,10 @@ "name": "S03_CH124_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.6083 }, "props": { "params": { @@ -9905,10 +9905,10 @@ "name": "S03_CH126_PE2" }, "position": { - "height": 41, - "width": 107, - "x": 1497, - "y": 657 + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.6083 }, "props": { "params": { @@ -9934,10 +9934,10 @@ "name": "S03_CH128_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1564, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.6083 }, "props": { "params": { @@ -9963,10 +9963,10 @@ "name": "S03_CH130_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1639, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.6083 }, "props": { "params": { @@ -9992,10 +9992,10 @@ "name": "S03_1_LRPE11" }, "position": { - "height": 33, - "width": 259, - "x": 1500.46, - "y": 521.99 + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 }, "props": { "params": { @@ -10020,6 +10020,12 @@ "meta": { "name": "root" }, + "props": { + "mode": "percent", + "style": { + "overflow": "hidden" + } + }, "type": "ia.container.coord" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json new file mode 100644 index 00000000..9195902f --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-18T10:23:32Z" + }, + "lastModificationSignature": "8ffadcdf171b959f80c684a59ad3e79d4444412a0d2efb99f82dc9533aa2d67c" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png new file mode 100644 index 00000000..8a632849 Binary files /dev/null and b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json new file mode 100644 index 00000000..64ccd2e6 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json @@ -0,0 +1,3260 @@ +{ + "custom": { + "MCM": "", + "currentTable": "HISTORY", + "page": "", + "view": "" + }, + "params": {}, + "propConfig": { + "custom.MCM": { + "binding": { + "config": { + "expression": "if({view.custom.view} !\u003d \"\", {view.custom.view}, {view.custom.page})" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.currentTable": { + "persistent": true + }, + "custom.page": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.view": { + "binding": { + "config": { + "path": "page.props.primaryView" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 250, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#3B3B3B" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "active-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"ACTIVE\"" + }, + "type": "expr" + } + }, + "props.columns[4].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priorityList": "{this.custom.priorities}" + }, + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d [col for col in ds.columnNames if col !\u003d \"EndTimestamp\"]\n\t\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "NumberID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Number (ID)" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Event Timestamp" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "string", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Active Alarms" + }, + "noFilterResults": { + "text": "No Active Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "hitList-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HITLIST\"" + }, + "type": "expr" + } + }, + "props.columns[5].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarmsWithCount" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data\n", + "type": "script" + } + ], + "type": "query" + } + }, + "props.editingCell": { + "onChange": { + "enabled": null, + "script": "\tall_alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\tshelved_alarms \u003d [alarm for alarm in all_alarms if alarm.isShelved()]\n\t\n\t# Build dataset for table\n\theaders \u003d [\u0027ID\u0027, \u0027StartTimestamp\u0027, \u0027EndTimestamp\u0027, \u0027Duration\u0027, \u0027Description\u0027, \u0027Priority\u0027, \u0027Tag\u0027, \u0027MCM\u0027]\n\tdata \u003d []\n\t\n\tfor alarm in shelved_alarms:\n\t # Calculate duration (time since shelved)\n\t if alarm.activeTime:\n\t duration_ms \u003d system.date.now().getTime() - alarm.activeTime.getTime()\n\t duration_seconds \u003d duration_ms / 1000\n\t hours \u003d int(duration_seconds / 3600)\n\t minutes \u003d int((duration_seconds % 3600) / 60)\n\t seconds \u003d int(duration_seconds % 60)\n\t duration \u003d \"%02d:%02d:%02d\" % (hours, minutes, seconds)\n\t else:\n\t duration \u003d \"00:00:00\"\n\t \n\t # Extract tag name from source\n\t tag_name \u003d alarm.source.split(\u0027/\u0027)[-1] if \u0027/\u0027 in alarm.source else alarm.source\n\t \n\t row \u003d [\n\t str(alarm.id) if hasattr(alarm, \u0027id\u0027) else \u0027\u0027,\n\t alarm.activeTime if alarm.activeTime else system.date.now(),\n\t None, # End timestamp (shelved alarms don\u0027t have end time yet)\n\t duration,\n\t alarm.displayPath if alarm.displayPath else alarm.source,\n\t alarm.priority.name if alarm.priority else \u0027Unknown\u0027,\n\t tag_name,\n\t \u0027System\u0027 # Adjust based on your source format\n\t ]\n\t data.append(row)\n\t\n\t# Create dataset and update the custom property\n\tdataset \u003d system.dataset.toDataSet(headers, data)\n\tself.custom.shelvedAlarmsData \u003d dataset" + } + }, + "props.selection": { + "persistent": true + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "FirstTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#FFFEFE", + "classes": "" + }, + "title": "First Timestamp" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "LastTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "Count", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "activeOption": 5, + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "historical-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HISTORY\"" + }, + "type": "expr" + } + }, + "props.columns[6].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "ID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617512 + ], + "$ts": 1750435156149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "EndTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617511 + ], + "$ts": 1750436956149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "End Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Severity" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "enabled": true, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-first-request", + "pageScope": true, + "script": "\tdata \u003d payload[\"data\"]\n\tinitial_data \u003d payload[\"initial_data\"]\n\tself.props.data \u003d data\n\tself.custom.initial_data \u003d initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "\thistorical_data \u003d payload[\"data\"]\n\tself.props.data \u003d historical_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "load_initial_data", + "pageScope": true, + "script": "\trequest \u003d payload[\"data\"]\n\tsystem.perspective.print(\"initial message received\")\n\tif request \u003d\u003d True:\n\t\tself.props.data \u003d self.custom.initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tif reset \u003d\u003d \"reset\":\n\t\tself.props.data \u003d []\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "1920px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ACTIVE" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "ACTIVE" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HITLIST\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HIT LIST" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HIT LIST" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HISTORY\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HISTORY" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HISTORY" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "props": { + "style": { + "gap": 2 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif self.view.custom.currentTable \u003d\u003d \"\":\n\t\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json new file mode 100644 index 00000000..9d6585c3 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-18T10:23:36Z" + }, + "lastModificationSignature": "87272fcbd8cc30c8968064e94a83d0eadd8eea704bfab82ea1e9f8dc12bafc29" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png new file mode 100644 index 00000000..b7c4ddf8 Binary files /dev/null and b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png differ diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json similarity index 79% rename from BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json rename to BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json index c7ddac27..dd82e720 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json @@ -262,6 +262,40 @@ }, "type": "ia.display.icon" }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Back", + "tooltip": { + "enabled": true, + "text": "Go back to DEX" + } + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "props": { + "color": "#FFFFFF", + "path": "material/arrow_back", + "style": { + "classes": "Header/Icon", + "cursor": "pointer", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, { "children": [ { @@ -465,186 +499,11 @@ } }, "props": { - "color": "#FF0000", + "color": "#47FF47", "path": "material/table_chart" }, "type": "ia.display.icon" }, - { - "meta": { - "hasDelegate": true, - "name": "Spacer 1" - }, - "position": { - "basis": "20px" - }, - "props": { - "text": " " - }, - "type": "ia.display.label" - }, - { - "custom": { - "buttonid": "HeaderNotifyIcon", - "entries": [ - { - "PrimaryKey": "2024-05-08 10:17:51", - "author": "pll", - "body": "Introducing our brand new Announcement Feature! 🎉 Stay in the loop with important updates, new features, planned downtime events, all in one place. Never miss out again! Check it out now and stay tuned for the latest updates. 🔊", - "childproj": "https://eu-preprod.scada2.rme.amazon.dev: MAN2", - "expire": "2024-05-09 05:00:00", - "link1": "https://", - "link1title": "", - "link2": "https://", - "link2title": "", - "priority": "Healthy", - "publish": "2024-05-08 10:08:33", - "title": "📢 Exciting News! 📢", - "whids": "" - } - ], - "entryCount": 1, - "highestPriority": 5 - }, - "events": { - "dom": { - "onClick": [ - { - "config": { - "draggable": true, - "id": "ioNP2CXn", - "modal": true, - "overlayDismiss": true, - "resizable": true, - "showCloseIcon": true, - "title": "Notifications", - "type": "open", - "viewParams": { - "entryCount": "{/root/Icon_0.custom.entryCount}", - "instances": "{/root/Icon_0.custom.entries}" - }, - "viewPath": "PopUp-Views/Notify-Tool/Notify-Popup", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - }, - { - "config": { - "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - ] - } - }, - "meta": { - "name": "Icon_0", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "style": { - "whiteSpace": "pre" - }, - "text": "📢 Exciting News! 📢\n" - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "custom.refreshMSG": { - "binding": { - "config": { - "expression": "now(600000)" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\u0027refreshNotifyIcon\u0027)" - } - }, - "position.display": { - "binding": { - "config": { - "path": "view.custom.EntriesList" - }, - "transforms": [ - { - "code": "\tfrom datetime import datetime\n\t\n#\tRead entries from dynamo table\n\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\tEntriesList \u003d returns[\u0027Items\u0027]\n\tEntriesList.reverse()\n#\treturn EntriesList\n\n#\tCreate empty list and now string\n\tpublishdates \u003d []\n\tnow \u003d datetime.now()\n\tnowstr \u003d str(now)[:19]\n\tactiveNotify \u003d False\n\twhid \u003d self.session.custom.fc\n\tstates \u003d {\u0027Healthy\u0027:5,\u0027Diagnostic\u0027:4, \u0027Low\u0027:3, \u0027Medium\u0027:2, \u0027High\u0027:1}\n#\tCheck EntriesList for active entries based on publish and expire times\n\tactiveEntries \u003d []\n\ttooltip \u003d []\n\tcount \u003d 0\n\thighestPriority \u003d 5\n\tfor e in EntriesList:\n\t\t\n\t\tif len(e[\u0027whids\u0027])\u003e0:\n\t\t\tif whid in e[\u0027whids\u0027]:\n\t\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\t\tactiveEntries.append(e)\n\t\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\t\tactiveNotify \u003d True\n\t\t\t\t\tcount +\u003d1\n\t\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\t\telse:\n\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\tactiveEntries.append(e)\n\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\tactiveNotify \u003d True\t\t\n\t\t\t\tcount +\u003d1\t\n\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\n\t\t\t\n\ttooltiptext \u003d \u0027\u0027\n\tfor i in tooltip:\n\t\ttooltiptext+\u003d i+\u0027\\n\u0027\n\tself.custom.entries \u003d activeEntries\n\tself.custom.highestPriority \u003d highestPriority\n\tself.custom.entryCount \u003d count\n\tself.meta.tooltip.text \u003d tooltiptext\t\n\n\n#\treturn returns\n#\treturn activeEntries\n\treturn activeNotify", - "type": "script" - } - ], - "type": "property" - } - }, - "props.color": { - "binding": { - "config": { - "path": "this.custom.highestPriority" - }, - "transforms": [ - { - "fallback": "state5", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "state1" - }, - { - "input": 2, - "output": "state2" - }, - { - "input": 3, - "output": "state3" - }, - { - "input": 4, - "output": "state4" - }, - { - "input": 5, - "output": "state5" - } - ], - "outputType": "scalar", - "type": "map" - }, - { - "code": "\ttest \u003d self.session.custom.colours.colour_impaired\n\tstatecolor \u003d self.session.custom.colours[value]\n\treturn statecolor", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "path": "material/campaign", - "style": { - "marginLeft": 5, - "marginRight": 5 - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "refreshNotifyIcon", - "pageScope": true, - "script": "\n\tself.refreshBinding(\u0027props.color\u0027)\n\tself.refreshBinding(\u0027position.display\u0027)", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.display.icon" - }, { "meta": { "hasDelegate": true, diff --git a/conversion-report.txt b/conversion-report.txt new file mode 100644 index 00000000..aaa8c876 --- /dev/null +++ b/conversion-report.txt @@ -0,0 +1,4 @@ +Starting conversion: 20250815:23.05.38 +Conversion finished. Elapsed time: 9 ms +Starting conversion: 20250815:23.07.32 +Conversion finished. Elapsed time: 12 ms