{ "custom": {}, "params": {}, "props": { "defaultSize": { "height": 1080, "width": 1920 } }, "root": { "children": [ { "children": [ { "children": [ { "meta": { "name": "FlexContainer_0" }, "position": { "height": 0.9124, "width": 0.2638, "x": 0.0026, "y": 0.0626 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "meta": { "name": "FlexContainer_2" }, "position": { "height": 0.0529, "width": 0.9791, "x": 0.0025, "y": -0.002 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "meta": { "name": "FlexContainer_1", "visible": false }, "position": { "height": 0.1482, "width": 0.3717, "x": 0.2761, "y": 0.8209 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "events": { "component": { "onEditCellCommit": { "config": { "script": "\tpayload \u003d {\n\t\t\"Msg\":\"Event is %s\"%str(event)\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tsystem.perspective.sendMessage(\"updateAlarmNote\", event, \"page\")" }, "scope": "G", "type": "script" }, "onRowDoubleClick": { "config": { "script": "\tselectedRowValue\u003devent[\"value\"]\n\tpayload\u003d{\"ID\":selectedRowValue[\"ID\"],\"Name\":selectedRowValue[\"Name\"],\"Priority\":selectedRowValue[\"Priority\"]}\n\tsystem.perspective.sendMessage(\"alarmsTab_selectAlarm\",payload)\n" }, "scope": "G", "type": "script" } } }, "meta": { "name": "tableAlarms" }, "position": { "height": 0.7411, "width": 0.708, "x": 0.2749, "y": 0.0632 }, "propConfig": { "props.data": { "binding": { "config": { "bidirectional": true, "path": "session.custom.alarms" }, "type": "property" } } }, "props": { "cells": { "style": { "overflow": "hidden" } }, "columns": [ { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Row", "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": "center", "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": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "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": "" }, "title": "" }, "justify": "center", "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": true, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 80 }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Name", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": true, "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", "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": true, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 400 }, { "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": "", "value": "" }, "visible": "on-hover" }, "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": "string", "resizable": true, "sort": "none", "sortable": true, "strictWidth": true, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 150 }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Type", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": true, "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", "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": false, "sort": "none", "sortable": false, "strictWidth": false, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": false, "width": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Tested_date_UTC", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": true, "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", "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": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Result", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": true, "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", "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": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": true, "field": "Notes", "filter": { "boolean": { "condition": "" }, "date": { "condition": "", "value": "" }, "enabled": true, "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", "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": "" } ], "dragOrderable": false, "pager": { "bottom": false, "initialOption": 1000 }, "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "auto" } }, "scripts": { "customMethods": [], "extensionFunctions": null, "messageHandlers": [ { "messageType": "updateAlarmNote", "pageScope": true, "script": "\t# implement your handler here\n\trow_index \u003d payload[\"rowIndex\"]\n\tcolumn \u003d payload[\"column\"]\n\t\n\tself.props.data[row_index][column] \u003d payload[\"value\"]", "sessionScope": false, "viewScope": false } ] }, "type": "ia.display.table" }, { "meta": { "name": "Label_7" }, "position": { "height": 0.0318, "width": 0.0626, "x": -0.0988, "y": 0.3665 }, "props": { "text": "Timestamp ms" }, "type": "ia.display.label" }, { "meta": { "name": "Label_4", "visible": false }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.1666, "x": 0.2988, "y": 0.8376 }, "props": { "style": { "fontWeight": "bolder" }, "text": "Information" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{}\n\tpayload[\"containerName\"]\u003dself.parent.meta.name\n\tpayload[\"targetTable\"]\u003d\"tableAlarms\"\n\tsystem.perspective.sendMessage(\"exportFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_18", "tooltip": { "enabled": true, "text": "Exports Alarms Table Data" } }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1933, "y": 0.9258 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/import_export" } }, "primary": false, "text": "Export" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"alarmsTab_init\")\n\tself.session.custom.alarms \u003d[]" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit", "tooltip": { "enabled": true, "text": "Reset Alarm List and User Inputs" } }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1224, "y": 0.9258 }, "props": { "image": { "height": 32, "icon": { "color": "#000000", "path": "material/refresh" } }, "primary": false, "text": "Reset" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d True" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Uploads" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.0193, "y": 0.0173 }, "props": { "image": { "icon": { "path": "material/import_export" } }, "primary": false, "text": "Uploads" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"status\":1,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_12", "tooltip": { "enabled": true, "text": "Send Alarm Active Message" } }, "position": { "height": 0.0385, "width": 0.1408, "x": 0.1223, "y": 0.3082 }, "props": { "image": { "icon": { "color": "#FFFFFF", "path": "material/power_settings_new" } }, "text": "Activate" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"status\":0,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_13", "tooltip": { "enabled": true, "text": "Send Alarm De-active Message" } }, "position": { "height": 0.0385, "width": 0.1408, "x": 0.1223, "y": 0.3515 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/not_interested" } }, "primary": false, "text": "De-activate" }, "type": "ia.input.button" }, { "meta": { "name": "textFieldEventsCommandParams_Timestamp", "visible": false }, "position": { "height": 0.0318, "width": 0.1079, "x": 0.1223, "y": 0.2716 }, "propConfig": { "props.text": { "binding": { "config": { "expression": "toStr(toMillis({../DateTimeInput.props.value}))" }, "type": "expr" } } }, "props": { "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_10" }, "position": { "height": 0.0318, "width": 0.0803, "x": 0.0287, "y": 0.1251 }, "props": { "text": "Controller" }, "type": "ia.display.label" }, { "meta": { "name": "dropdownEventsCommandParams_Target" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.142, "x": 0.1223, "y": 0.0886 }, "propConfig": { "props.options": { "binding": { "config": { "path": "session.custom.sources" }, "transforms": [ { "code": "\toptions \u003d []\n\tfor source in value :\n\t\topt \u003d {\n\t\t \"value\":source[\"Source\"],\n\t\t \"label\":source[\"Source\"]\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", "type": "script" } ], "type": "property" } } }, "props": { "showClearIcon": true, "value": null }, "type": "ia.input.dropdown" }, { "meta": { "name": "textFieldEventsCommandParams_EventDescription" }, "position": { "height": 0.0318, "rotate": { "anchor": "375% -109%" }, "width": 0.1418, "x": 0.1223, "y": 0.1617 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_8" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.0803, "x": 0.0287, "y": 0.0886 }, "props": { "text": "Source ID" }, "type": "ia.display.label" }, { "meta": { "name": "Label_14" }, "position": { "height": 0.0318, "width": 0.0803, "x": 0.0287, "y": 0.1617 }, "props": { "text": "Alarm Description" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"testResult\":\"PASSED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_14", "tooltip": { "enabled": true, "text": "Scada State Matches Alarms State " } }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1223, "y": 0.4429 }, "props": { "image": { "icon": { "color": "#323232", "path": "material/check_circle_outline" } }, "primary": false, "text": "Passed" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"testResult\":\"FAILED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_15", "tooltip": { "enabled": true, "text": "Scada State Does Not Matche Alarms State " } }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1932, "y": 0.4429 }, "props": { "image": { "icon": { "color": "#323232", "path": "material/highlight_off" } }, "primary": false, "text": "Failed" }, "type": "ia.input.button" }, { "meta": { "name": "Label_6" }, "position": { "height": 0.0318, "width": 0.0803, "x": 0.0287, "y": 0.1983 }, "props": { "text": "ID" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldEventsCommandParams_EventID" }, "position": { "height": 0.0318, "rotate": { "anchor": "375% -109%" }, "width": 0.1418, "x": 0.1223, "y": 0.1983 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_13" }, "position": { "height": 0.0318, "width": 0.0803, "x": 0.0287, "y": 0.2348 }, "props": { "text": "Priority" }, "type": "ia.display.label" }, { "meta": { "name": "textField_alarmPriority", "tooltip": { "style": { "classes": "Alarms-Styles/Critical" } } }, "position": { "height": 0.0318, "rotate": { "anchor": "375% -109%" }, "width": 0.1418, "x": 0.1223, "y": 0.2348 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_20" }, "position": { "height": 0.0318, "width": 0.0803, "x": 0.0287, "y": 0.2714 }, "props": { "text": "Date and time" }, "type": "ia.display.label" }, { "meta": { "name": "DateTimeInput" }, "position": { "height": 0.0318, "rotate": { "anchor": "-58% 268%" }, "width": 0.1079, "x": 0.1223, "y": 0.2714 }, "props": { "format": "YYYY-MM-DD hh:mm:ss", "formattedValue": "2023-08-29 12:11:39", "tex": "", "text": "", "value": 1693311099006 }, "type": "ia.input.date-time-input" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\t\n\tnow \u003d system.date.now()\n\t\n\ttimeNow\u003dsystem.date.toMillis(now)\n\tself.getSibling(\"DateTimeInput\").props.value \u003d timeNow\n\t\n\t\n\tMsg \u003d \"Setting time of message to %s\"%now\n\tpayload \u003d {\n\t\t\"Msg\":Msg\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit_2" }, "position": { "height": 0.0318, "width": 0.0308, "x": 0.2328, "y": 0.2727 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/access_time" } }, "primary": false, "text": "" }, "type": "ia.input.button" }, { "meta": { "name": "textFieldTargetPLC" }, "position": { "height": 0.0318, "width": 0.142, "x": 0.1223, "y": 0.1251 }, "propConfig": { "props.text": { "binding": { "config": { "path": "../dropdownEventsCommandParams_Target.props.value" }, "transforms": [ { "code": "\ttry:\n\t\treturn value.split(\"/\")[0]\n\texcept:\n\t\treturn \"\"", "type": "script" } ], "type": "property" } } }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "EmbeddedView", "tooltip": { "enabled": true, "text": "User Feedback" } }, "position": { "height": 0.153, "width": 0.708, "x": 0.2742, "y": 0.82 }, "props": { "path": "Main-Views/Commissioning Tool/UserFeedBack", "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "auto" } }, "type": "ia.display.view" } ], "custom": { "dateTimeCommandSent": { "$": [ "ts", 192, 1668596541256 ], "$ts": 1668596541109 }, "testingAlarmPriority1": "", "testingAlarmPriority2": "", "testingAlarmPriority3": "", "testingAlarmPriority4": "" }, "meta": { "name": "ContainerAlarms" }, "props": { "mode": "percent" }, "type": "ia.container.coord" }, { "children": [ { "meta": { "name": "FlexContainer_3" }, "position": { "height": 0.9105, "width": 0.2664, "x": 0.0021, "y": 0.0644 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "meta": { "name": "FlexContainer_2" }, "position": { "height": 0.0549, "width": 0.9776, "x": 0.0026, "y": -0.001 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "events": { "component": { "onEditCellCommit": { "config": { "script": "\tpayload \u003d {\n\t\t\"Msg\":\"Event is %s\"%str(event)\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tsystem.perspective.sendMessage(\"updateSourceNote\", event, \"page\")" }, "scope": "G", "type": "script" }, "onRowDoubleClick": { "config": { "script": "\tselectedRowValue\u003devent[\"value\"]\n\tpayload\u003d{\"Source\":selectedRowValue[\"Source\"]}\n\tsystem.perspective.sendMessage(\"sourcesTab_selectSource\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "tableSources" }, "position": { "height": 0.7382, "width": 0.7049, "x": 0.2751, "y": 0.0649 }, "propConfig": { "props.data": { "binding": { "config": { "bidirectional": true, "path": "session.custom.sources" }, "type": "property" } } }, "props": { "columns": [ { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Row", "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", "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": "" }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "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": "" }, "title": "" }, "justify": "center", "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": true, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 80 }, { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Source", "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", "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": "Tested_date_UTC", "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", "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": "Result", "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", "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": "Notes", "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", "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": "" } ], "pager": { "initialOption": 1000 }, "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "auto" } }, "scripts": { "customMethods": [], "extensionFunctions": null, "messageHandlers": [ { "messageType": "updateSourceNote", "pageScope": true, "script": "\t# implement your handler here\n\trow_index \u003d payload[\"rowIndex\"]\n\tcolumn \u003d payload[\"column\"]\n\t\n\tself.props.data[row_index][column] \u003d payload[\"value\"]", "sessionScope": false, "viewScope": false } ] }, "type": "ia.display.table" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"sourcesTab_init\")\n\tself.session.custom.sources \u003d []\n\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1286, "y": 0.9241 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/refresh" } }, "primary": false, "text": "Reset" }, "type": "ia.input.button" }, { "meta": { "name": "Label_8" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 133%" }, "width": 0.0808, "x": 0.0293, "y": 0.0898 }, "props": { "text": "Source ID" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldEventsCommandParams_Timestamp", "visible": false }, "position": { "height": 0.0318, "width": 0.1084, "x": 0.1231, "y": 0.2387 }, "propConfig": { "props.text": { "binding": { "config": { "expression": "toStr(toMillis({../DateTimeInput.props.value}))" }, "type": "expr" } } }, "props": { "style": { "textAlign": "right" } }, "type": "ia.input.text-field" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\t\n\ttimeNow\u003dsystem.date.toMillis(system.date.now())\n\tself.getSibling(\"DateTimeInput\").props.value \u003d timeNow\n\tself.getSibling(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timeNow\n\t\n\tMsg \u003d \"Setting time of message to %s\"%system.date.now()\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit_1" }, "position": { "height": 0.0318, "width": 0.0287, "x": 0.2364, "y": 0.2387 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/access_time" } }, "primary": false, "text": "" }, "type": "ia.input.button" }, { "meta": { "name": "Label_6" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0291, "y": 0.3118 }, "props": { "text": "ID" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldEventsCommandParams_EventID" }, "position": { "height": 0.0318, "rotate": { "anchor": "375% -109%" }, "width": 0.1403, "x": 0.1246, "y": 0.3118 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "text": "1" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_14" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0291, "y": 0.2013 }, "props": { "text": "Alarm Description" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldEventsCommandParams_EventDescription" }, "position": { "height": 0.0318, "width": 0.1423, "x": 0.124, "y": 0.2013 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "text": "AccessDoorOpenedFault1" }, "type": "ia.input.text-field" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"status\":1,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_12" }, "position": { "height": 0.0385, "width": 0.1387, "x": 0.1251, "y": 0.3484 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/power_settings_new" } }, "text": "Activate" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"status\":0,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_13" }, "position": { "height": 0.0385, "width": 0.1387, "x": 0.1251, "y": 0.3917 }, "props": { "image": { "icon": { "color": "000000", "path": "material/not_interested" } }, "primary": false, "text": "De-activate" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"testResult\":\"PASSED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_15" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1242, "y": 0.5462 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/check_circle_outline" } }, "primary": false, "text": "Passed" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"testResult\":\"FAILED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_16" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1961, "y": 0.5462 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/highlight_off" } }, "primary": false, "text": "Failed" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{}\n\tpayload[\"containerName\"]\u003dself.parent.meta.name\n\tpayload[\"targetTable\"]\u003d\"tableSources\"\n\tsystem.perspective.sendMessage(\"exportFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_18" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.2007, "y": 0.9243 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/import_export" } }, "primary": false, "text": "Export" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\talarm \u003d self.parent.custom.testingAlarmPriority1\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_17" }, "position": { "height": 0.0318, "width": 0.0261, "x": 0.1254, "y": 0.1631 }, "propConfig": { "props.enabled": { "binding": { "config": { "expression": "if({parent.custom.testingAlarmPriority1}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority1}\u003d\u0027\u0027, False, True) " }, "type": "expr" } }, "props.style.classes": { "binding": { "config": { "path": "session.custom.colours.colour_impaired" }, "transforms": [ { "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Diagnostic\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Diagnostic\"\n\t\t ", "type": "script" } ], "type": "property" } } }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "style": {}, "text": 1 }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\talarm \u003d self.parent.custom.testingAlarmPriority2\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_19" }, "position": { "height": 0.0318, "width": 0.0266, "x": 0.1566, "y": 0.1631 }, "propConfig": { "props.enabled": { "binding": { "config": { "expression": "if({parent.custom.testingAlarmPriority2}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority2}\u003d\u0027\u0027, False, True) " }, "type": "expr" } }, "props.style.classes": { "binding": { "config": { "path": "session.custom.colours.colour_impaired" }, "transforms": [ { "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Low\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Low\"\n\t\t ", "type": "script" } ], "type": "property" } } }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "style": {}, "text": 2 }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\talarm \u003d self.parent.custom.testingAlarmPriority3\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_20" }, "position": { "height": 0.0318, "width": 0.0261, "x": 0.1879, "y": 0.1631 }, "propConfig": { "props.enabled": { "binding": { "config": { "expression": "if({parent.custom.testingAlarmPriority3}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority3}\u003d\u0027\u0027, False, True) " }, "type": "expr" } }, "props.style.classes": { "binding": { "config": { "path": "session.custom.colours.colour_impaired" }, "transforms": [ { "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Medium\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Medium\"\n\t\t ", "type": "script" } ], "type": "property" } } }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "style": {}, "text": 3 }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\talarm \u003d self.parent.custom.testingAlarmPriority4\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_21" }, "position": { "height": 0.0318, "width": 0.0261, "x": 0.2192, "y": 0.1631 }, "propConfig": { "props.enabled": { "binding": { "config": { "expression": "if({parent.custom.testingAlarmPriority4}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority4}\u003d\u0027\u0027, False, True) " }, "type": "expr" } }, "props.style.classes": { "binding": { "config": { "path": "session.custom.colours.colour_impaired" }, "transforms": [ { "code": "\tif not value:\n\t\treturn \"Alarms-Styles/High\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/High\"\n\t\t ", "type": "script" } ], "type": "property" } } }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "style": {}, "text": 4 }, "type": "ia.input.button" }, { "meta": { "name": "Label_13" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0291, "y": 0.2752 }, "props": { "text": "Priority" }, "type": "ia.display.label" }, { "meta": { "name": "textField_alarmPriority", "tooltip": { "style": { "classes": "Alarms-Styles/Critical" } } }, "position": { "height": 0.0318, "rotate": { "anchor": "375% -109%" }, "width": 0.1403, "x": 0.1241, "y": 0.2752 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "text": "High" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_20" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0291, "y": 0.2361 }, "props": { "text": "Date and time" }, "type": "ia.display.label" }, { "meta": { "name": "DateTimeInput" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 62%" }, "width": 0.1074, "x": 0.1242, "y": 0.2377 }, "props": { "format": "YYYY-MM-DD hh:mm:ss", "formattedValue": "2023-08-30 12:28:29", "text": "", "value": 1693398509608 }, "type": "ia.input.date-time-input" }, { "meta": { "name": "Label_11" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0291, "y": 0.1264 }, "props": { "text": "Controller" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldTargetPLC" }, "position": { "height": 0.0318, "width": 0.1418, "x": 0.1242, "y": 0.1264 }, "propConfig": { "props.text": { "binding": { "config": { "path": "../textField_SelectedTarget.props.text" }, "transforms": [ { "code": "\treturn value.split(\"/\")[0]", "type": "script" } ], "type": "property" } } }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_16" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0294, "y": 0.1631 }, "props": { "text": "Alarm Priority" }, "type": "ia.display.label" }, { "meta": { "name": "textField_SelectedTarget" }, "position": { "height": 0.0318, "width": 0.1423, "x": 0.124, "y": 0.0898 }, "props": { "enabled": false, "style": { "textAlign": "right" }, "tex": "", "text": "PLC01/UL5-2/ESTOP2" }, "type": "ia.input.text-field" }, { "meta": { "name": "StatusIcon" }, "position": { "height": 0.0799, "rotate": { "anchor": "50% 40%" }, "width": 0.0693, "x": 0.1954, "y": 0.4562 }, "propConfig": { "meta.visible": { "binding": { "config": { "expression": "if({this.props.params.tagProps[0]}\u003d\u0027\u0027,False,True)" }, "type": "expr" } }, "props.params.tagProps[0]": { "binding": { "config": { "path": "../dropdownEventsCommandParams_Target.props.value" }, "type": "property" } } }, "props": { "params": { "tagProps": [ null, "", "value", "value", "value", "value", "value", "value", "value", "value" ] }, "path": "Symbol-Views/Equipment-Views/ControlCabinet", "useDefaultViewWidth": true }, "type": "ia.display.view" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d True" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Uploads" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.0193, "y": 0.0163 }, "props": { "image": { "icon": { "path": "material/import_export" } }, "primary": false, "text": "Uploads" }, "type": "ia.input.button" }, { "meta": { "name": "EmbeddedView" }, "position": { "height": 0.153, "width": 0.7044, "x": 0.2763, "y": 0.8212 }, "props": { "path": "Main-Views/Commissioning Tool/UserFeedBack", "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "auto" } }, "type": "ia.display.view" } ], "custom": { "testingAlarmPriority1": { "id": "3", "message": "BufferBatteryErrorSystemWarning1", "priority": "Diagnostic", "type": "0" }, "testingAlarmPriority2": "", "testingAlarmPriority3": { "id": "22", "message": "ExternalUnitFault1", "priority": "Medium", "type": "0" }, "testingAlarmPriority4": { "id": "1", "message": "AccessDoorOpenedFault1", "priority": "High", "type": "1" } }, "meta": { "name": "ContainerSources" }, "position": { "tabIndex": 1 }, "props": { "mode": "percent" }, "type": "ia.container.coord" }, { "children": [ { "meta": { "name": "FlexContainer_3" }, "position": { "height": 0.9192, "width": 0.2534, "x": 0.003, "y": 0.0635 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "meta": { "name": "FlexContainer_5" }, "position": { "height": 0.0597, "width": 0.9797, "x": 0.0032, "y": -0.0058 }, "props": { "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10 } }, "type": "ia.container.flex" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"fileFormat\":\"csv\"}\n\tsystem.perspective.sendMessage(\"measurementTab_exportFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_18" }, "position": { "height": 0.0385, "width": 0.0673, "x": 0.1884, "y": 0.9278 }, "props": { "image": { "height": 32, "icon": { "color": "#000000", "path": "material/import_export" } }, "primary": false, "text": "Export" }, "type": "ia.input.button" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileExtension\":event.file.name.split(\".\")[1]}\n\tsystem.perspective.sendMessage(\"measurementTab_importFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload_0" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.0197, "y": 0.0159 }, "props": { "fileUploadIcon": { "color": "#000000", "path": "material/import_export", "style": { "borderStyle": "none" } }, "maxUploads": 1, "style": { "backgroundColor": "#FAFAFA", "borderStyle": "solid", "classes": "" }, "supportedFileTypes": [ "csv" ] }, "type": "ia.input.fileupload" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"measurementTab_changeSelectedPLC\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "dropdownTargetPLC" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1413, "x": 0.1141, "y": 0.1304 }, "propConfig": { "props.options": { "binding": { "config": { "path": "session.custom.sources" }, "transforms": [ { "code": "\toptions \u003d []\n\tlist_of_controllers \u003d []\n\tfor source in value :\n\t\ttry:\n\t\t\tcontroller \u003d source[\"Source\"].split(\"/\")[0]\n\t\texcept:\n\t\t\tcontinue\n\t\t\n\t\tif controller in list_of_controllers:\n\t\t\tcontinue\t\n\t\t\n\t\tlist_of_controllers.append(controller)\n\t\t\n\t\topt \u003d {\n\t\t \"value\":controller,\n\t\t \"label\": controller\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", "type": "script" } ], "type": "property" } } }, "props": { "placeholder": { "text": "Select Controller..." }, "showClearIcon": true, "value": "PLC01" }, "type": "ia.input.dropdown" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"measurementTab_init\")\n\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.1126, "y": 0.9278 }, "props": { "image": { "height": 32, "icon": { "color": "#000000", "path": "material/refresh" } }, "primary": false, "text": "Reset" }, "type": "ia.input.button" }, { "meta": { "name": "Label_11" }, "position": { "height": 0.0318, "width": 0.0933, "x": 0.022, "y": 0.1312 }, "props": { "text": "Controller" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"measurementTab_sendEvent\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_17" }, "position": { "height": 0.0385, "width": 0.1449, "x": 0.1126, "y": 0.8263 }, "props": { "image": { "icon": { "color": "#FFFFFF", "path": "material/power_settings_new" } }, "text": "Send Sequence" }, "type": "ia.input.button" }, { "meta": { "name": "rowOfLastMessageSent", "visible": false }, "position": { "height": 0.0308, "rotate": { "anchor": "50% 38%" }, "width": 0.0313, "x": 0.6155, "y": 0.9464 }, "props": { "enabled": false, "value": 1 }, "type": "ia.input.numeric-entry-field" }, { "meta": { "name": "Label_13" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.0933, "x": 0.022, "y": 0.0935 }, "props": { "text": "Source ID" }, "type": "ia.display.label" }, { "meta": { "name": "dropdownEventsCommandParams_Target" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1413, "x": 0.1141, "y": 0.0928 }, "propConfig": { "props.options": { "binding": { "config": { "path": "session.custom.sources" }, "transforms": [ { "code": "\toptions \u003d []\n\tfor source in value :\n\t\topt \u003d {\n\t\t \"value\":source[\"Source\"],\n\t\t \"label\": source[\"Source\"]\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", "type": "script" } ], "type": "property" } } }, "props": { "placeholder": { "text": "Select Source ID..." }, "showClearIcon": true, "value": "PLC01/UL5-1" }, "type": "ia.input.dropdown" }, { "meta": { "name": "dropdownMeasurementName" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1444, "x": 0.1148, "y": 0.3525 }, "props": { "options": [ { "label": "RESULT_NOREAD", "value": "RESULT_NOREAD" }, { "label": "RESULT_MULTIREAD", "value": "RESULT_MULTIREAD" }, { "label": "RESULT_SAL_CODE_AT_INFEED", "value": "RESULT_SAL_CODE_AT_INFEED" }, { "label": "RESULT_INSUFFICIENT_GAP_AT_INFEED", "value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" }, { "label": "RESULT_NOT_ALIGNED", "value": "RESULT_NOT_ALIGNED" }, { "label": "RESULT_WRONG_ORIENTATION", "value": "RESULT_WRONG_ORIENTATION" }, { "label": "RESULT_OVER_LENGTH", "value": "RESULT_OVER_LENGTH" }, { "label": "RESULT_NODATA", "value": "RESULT_NODATA" }, { "label": "RESULT_BAD_REQUEST", "value": "RESULT_BAD_REQUEST" }, { "label": "RESULT_AEG_ERROR", "value": "RESULT_AEG_ERROR" }, { "label": "RESULT_VERIFY_SALNOREAD", "value": "RESULT_VERIFY_SALNOREAD" }, { "label": "RESULT_VERIFY_SHIPNOREAD", "value": "RESULT_VERIFY_SHIPNOREAD" }, { "label": "RESULT_VERIFY_SALMISMATCH", "value": "RESULT_VERIFY_SALMISMATCH" }, { "label": "RESULT_SAFETY_STOP_FLUSH", "value": "RESULT_SAFETY_STOP_FLUSH" }, { "label": "RESULT_VERIFY_SAL_MULTIREAD", "value": "RESULT_VERIFY_SAL_MULTIREAD" }, { "label": "RESULT_MISMATCH_FLUSH", "value": "RESULT_MISMATCH_FLUSH" }, { "label": "RESULT_PITCH_OR_TRACKING_ERROR", "value": "RESULT_PITCH_OR_TRACKING_ERROR" }, { "label": "RESULT_CAMERA_ERROR_INDUCT", "value": "RESULT_CAMERA_ERROR_INDUCT" }, { "label": "RESULT_CAMERA_ERROR_VERIFY", "value": "RESULT_CAMERA_ERROR_VERIFY" }, { "label": "RESULT_TAMP_FAILED_TO_EXTEND", "value": "RESULT_TAMP_FAILED_TO_EXTEND" }, { "label": "RESULT_MISC_ERROR_OPERATIONS", "value": "RESULT_MISC_ERROR_OPERATIONS" }, { "label": "RESULT_MISC_ERROR_MACHINE", "value": "RESULT_MISC_ERROR_MACHINE" }, { "label": "RESULT_UNKNOWN", "value": "RESULT_UNKNOWN" }, { "label": "RESULT_SUCCESS_SIDELINE", "value": "RESULT_SUCCESS_SIDELINE" }, { "label": "RESULT_SUCCESS", "value": "RESULT_SUCCESS" } ], "showClearIcon": true, "value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" }, "type": "ia.input.dropdown" }, { "meta": { "name": "delta" }, "position": { "height": 0.0318, "width": 0.1444, "x": 0.1143, "y": 0.3891 }, "props": { "inputBounds": { "maximum": 10000, "minimum": 1 }, "value": 100 }, "type": "ia.input.numeric-entry-field" }, { "meta": { "name": "Label_16" }, "position": { "height": 0.0318, "width": 0.0792, "x": 0.0218, "y": 0.3911 }, "props": { "text": "Delta" }, "type": "ia.display.label" }, { "meta": { "name": "Label_17" }, "position": { "height": 0.0318, "width": 0.0808, "x": 0.0218, "y": 0.3545 }, "props": { "text": "Measurement name" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"measurementTab_setMeasurementInTable\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_29" }, "position": { "height": 0.0385, "width": 0.1444, "x": 0.1143, "y": 0.4988 }, "props": { "image": { "icon": { "color": "#323232", "path": "material/control_point" } }, "primary": false, "text": "Set Measurement" }, "type": "ia.input.button" }, { "meta": { "name": "Label_18" }, "position": { "height": 0.0318, "width": 0.0792, "x": 0.0218, "y": 0.4276 }, "props": { "text": "Unit" }, "type": "ia.display.label" }, { "meta": { "name": "Label_19" }, "position": { "height": 0.0318, "width": 0.0792, "x": 0.0218, "y": 0.4642 }, "props": { "text": "Sampling ms" }, "type": "ia.display.label" }, { "meta": { "name": "sampling" }, "position": { "height": 0.0318, "width": 0.1444, "x": 0.1143, "y": 0.4622 }, "props": { "inputBounds": { "minimum": 1 }, "value": 1 }, "type": "ia.input.numeric-entry-field" }, { "meta": { "name": "textFieldUnit" }, "position": { "height": 0.0318, "width": 0.1444, "x": 0.1143, "y": 0.4256 }, "props": { "style": { "textAlign": "right" }, "text": "un" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_22" }, "position": { "height": 0.0318, "width": 0.0975, "x": 0.0222, "y": 0.7102 }, "props": { "text": "Current state" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetEventState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setEventState\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_30" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.115, "y": 0.6 }, "props": { "image": { "height": 32, "icon": { "color": "#323232", "path": "material/power_settings_new" } }, "primary": false, "text": "Set On" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetEventState\":\"0\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setEventState\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_31" }, "position": { "height": 0.0385, "width": 0.0683, "x": 0.189, "y": 0.6 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/not_interested" } }, "primary": false, "text": "Set Off" }, "type": "ia.input.button" }, { "meta": { "name": "Label_24" }, "position": { "height": 0.0318, "width": 0.0928, "x": 0.022, "y": 0.5628 }, "props": { "text": "Alarm ID" }, "type": "ia.display.label" }, { "meta": { "name": "Label_23" }, "position": { "height": 0.0318, "width": 0.0975, "x": 0.022, "y": 0.6 }, "props": { "text": "Signal state" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_33" }, "position": { "height": 0.0385, "width": 0.0454, "x": 0.1145, "y": 0.7094 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Fault" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"2\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_34" }, "position": { "height": 0.0385, "width": 0.0454, "x": 0.1635, "y": 0.7094 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Stop" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"3\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_35" }, "position": { "height": 0.0385, "width": 0.0459, "x": 0.2126, "y": 0.7094 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Run" }, "type": "ia.input.button" }, { "meta": { "name": "EmbeddedView" }, "position": { "height": 0.7584, "width": 0.7226, "x": 0.2591, "y": 0.0641 }, "propConfig": { "props.params.last_message_index": { "binding": { "config": { "path": "../rowOfLastMessageSent.props.value" }, "type": "property" } }, "props.params.tabledata": { "binding": { "config": { "path": "../tableSequence.props.data" }, "type": "property" } } }, "props": { "path": "Main-Views/Commissioning Tool/SequenceTester", "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "visible" } }, "type": "ia.display.view" }, { "events": { "component": { "onRowDoubleClick": { "config": { "script": "\tselectedRowValue\u003devent[\"value\"]\n\t#payload\u003d{\"Source\":selectedRowValue[\"Source\"]}\n\t#system.perspective.sendMessage(\"sourcesTab_selectSource\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "tableSequence", "visible": false }, "position": { "height": 0.5938, "width": 0.6747, "x": 0.3011, "y": 0.2369 }, "propConfig": { "props.selection.data": { "onChange": { "enabled": null, "script": "\tsystem.perspective.sendMessage(\"tableSelectionData\", self.props.selection.data, \"page\")" } } }, "props": { "columns": [ { "align": "center", "boolean": "checkbox", "dateFormat": "MM/DD/YYYY", "editable": false, "field": "Seq", "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": true, "style": { "classes": "" }, "toggleSwitch": { "color": { "selected": "", "unselected": "" } }, "viewParams": {}, "viewPath": "", "visible": true, "width": 100 }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" }, { "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": "" } ], "dragOrderable": false, "items": [], "pager": { "initialOption": 1000 }, "resizeMode": "fixed", "selection": { "mode": "multiple interval" } }, "scripts": { "customMethods": [], "extensionFunctions": null, "messageHandlers": [ { "messageType": "update_selectionData", "pageScope": true, "script": "\tself.props.data\n\t\n\t# implement your handler here\n\tseq\u003d payload[\"index\"]\n\tstate \u003d payload[\"state\"]\n\tsystem.perspective.print(seq)\n\tsystem.perspective.print(state)\n\t\n\tself.props.data[seq][\"Selected\"] \u003d state\n", "sessionScope": false, "viewScope": false }, { "messageType": "ClearSelection", "pageScope": true, "script": "\tsystem.perspective.print(\"clearSelection\")\n\tfor item in self.props.data:\n\t\titem[\"Selected\"] \u003d False", "sessionScope": false, "viewScope": false }, { "messageType": "ClearAll", "pageScope": true, "script": "\t# implement your handler here\n\tself.props.data \u003d []", "sessionScope": false, "viewScope": false }, { "messageType": "SelectAll", "pageScope": true, "script": "\t# implement your handler here\n\t\n\tfor item in self.props.data:\n\t\titem[\"Selected\"] \u003d True", "sessionScope": false, "viewScope": false } ] }, "type": "ia.display.table" }, { "meta": { "name": "Label_20" }, "position": { "height": 0.0318, "width": 0.1251, "x": 0.0185, "y": 0.5318 }, "props": { "text": "Events", "textStyle": { "fontSize": 12, "fontStyle": "italic", "fontWeight": "bolder", "textDecoration": "underline" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_26" }, "position": { "height": 0.0318, "width": 0.0912, "x": 0.0185, "y": 0.3163 }, "props": { "text": "Measurement Event", "textStyle": { "fontSize": 12, "fontStyle": "italic", "fontWeight": "bolder", "textDecoration": "underline" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_27" }, "position": { "height": 0.0318, "width": 0.0912, "x": 0.0185, "y": 0.6356 }, "props": { "text": "State Changed Event", "textStyle": { "fontSize": 12, "fontStyle": "italic", "fontWeight": "bolder", "textDecoration": "underline" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_15" }, "position": { "height": 0.0318, "width": 0.0813, "x": 0.0208, "y": 0.208 }, "props": { "text": "Offset ms" }, "type": "ia.display.label" }, { "meta": { "name": "Label_25" }, "position": { "height": 0.0318, "width": 0.0778, "x": 0.0208, "y": 0.1693 }, "props": { "text": "Date and time" }, "type": "ia.display.label" }, { "meta": { "name": "Label_8" }, "position": { "height": 0.0318, "width": 0.0892, "x": 0.0206, "y": 0.2433 }, "props": { "text": "Delay between Msg" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldEventsCommandParams_Timestamp", "visible": false }, "position": { "height": 0.0318, "rotate": { "anchor": "117% 50%" }, "width": 0.109, "x": 0.114, "y": 0.1989 }, "propConfig": { "props.text": { "binding": { "config": { "expression": "toStr(toMillis({../DateTimeInput_0.props.value}))" }, "type": "expr" } } }, "props": { "style": { "textAlign": "right" } }, "type": "ia.input.text-field" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\ttimeNow\u003dsystem.date.now()\n\ttimestamp \u003d system.date.toMillis(timeNow)\n\t\n\tself.getSibling(\"DateTimeInput_0\").props.value \u003d timestamp\n\tself.getSibling(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timestamp\n\t\n\tMsg \u003d \"Setting time of messages to %s\"%timeNow\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit_1" }, "position": { "height": 0.0318, "width": 0.0292, "x": 0.2262, "y": 0.1675 }, "props": { "image": { "icon": { "color": "#323232", "path": "material/access_time" } }, "primary": false, "text": "" }, "type": "ia.input.button" }, { "meta": { "name": "textFieldInterval" }, "position": { "height": 0.0318, "width": 0.1413, "x": 0.1142, "y": 0.2414 }, "props": { "inputBounds": { "minimum": 1 }, "value": 100 }, "type": "ia.input.numeric-entry-field" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"measurementTab_setTimestampInTable\")\n" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_22" }, "position": { "height": 0.0385, "width": 0.1413, "x": 0.1143, "y": 0.2798 }, "props": { "image": { "icon": { "color": "#323232", "path": "material/control_point" } }, "primary": false, "text": "Set Sequence Data" }, "type": "ia.input.button" }, { "meta": { "name": "timestampOffset" }, "position": { "height": 0.0318, "width": 0.1408, "x": 0.1143, "y": 0.2061 }, "props": { "inputBounds": { "minimum": 1 }, "value": 1000 }, "type": "ia.input.numeric-entry-field" }, { "meta": { "name": "DateTimeInput_0" }, "position": { "height": 0.0318, "width": 0.109, "x": 0.1128, "y": 0.1674 }, "props": { "format": "YYYY-MM-DD hh:mm:ss", "formattedValue": "2023-08-29 12:18:17", "value": 1693311497777 }, "type": "ia.input.date-time-input" }, { "meta": { "name": "Label_28" }, "position": { "height": 0.0318, "width": 0.0959, "x": 0.0222, "y": 0.6698 }, "props": { "text": "Reason Code" }, "type": "ia.display.label" }, { "meta": { "name": "dropdownReasonCode" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1439, "x": 0.1146, "y": 0.6698 }, "propConfig": { "props.options": { "binding": { "config": { "path": ".../ContainerAlarms/tableAlarms.props.data" }, "transforms": [ { "code": "\toptions \u003d []\n\t\n\tfor item in value:\n\t\topt \u003d{\n\t\t\"label\": item[\"Name\"],\n\t\t\"value\": item[\"ID\"]\n\t\t}\n\t\toptions.append(opt)\n\treturn options", "type": "script" } ], "type": "property" } } }, "props": { "placeholder": { "text": "Select Reason Code..." }, "showClearIcon": true, "value": "2" }, "type": "ia.input.dropdown" }, { "meta": { "name": "eventID" }, "position": { "height": 0.0318, "width": 0.1444, "x": 0.1135, "y": 0.5624 }, "propConfig": { "props.options": { "binding": { "config": { "path": ".../ContainerAlarms/tableAlarms.props.data" }, "transforms": [ { "code": "\toptions \u003d []\n\t\t\n\tfor item in value:\n\t\topt \u003d{\n\t\t\"label\": item[\"ID\"],\n\t\t\"value\": item[\"ID\"]\n\t\t}\n\t\toptions.append(opt)\n\treturn options", "type": "script" } ], "type": "property" } } }, "props": { "placeholder": { "text": "Select Alarm ID..." }, "value": "69" }, "type": "ia.input.dropdown" }, { "meta": { "name": "Label_29" }, "position": { "height": 0.0318, "width": 0.1, "x": 0.0194, "y": 0.7412 }, "props": { "text": "Mode Changed Event", "textStyle": { "fontSize": 12, "fontStyle": "italic", "fontWeight": "bolder", "textDecoration": "underline" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_30" }, "position": { "height": 0.0318, "width": 0.0975, "x": 0.0225, "y": 0.7737 }, "props": { "text": "Current Mode" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"0\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_36" }, "position": { "height": 0.0385, "width": 0.0454, "x": 0.1141, "y": 0.7729 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Auto" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_37" }, "position": { "height": 0.0385, "width": 0.0454, "x": 0.1627, "y": 0.7729 }, "props": { "image": { "height": 32, "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Maint" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"targetState\":\"2\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_38" }, "position": { "height": 0.0385, "width": 0.0459, "x": 0.2114, "y": 0.7729 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/control_point" } }, "primary": false, "text": "Man" }, "type": "ia.input.button" }, { "meta": { "name": "EmbeddedView_0" }, "position": { "height": 0.1482, "width": 0.7226, "x": 0.2592, "y": 0.8335 }, "props": { "path": "Main-Views/Commissioning Tool/UserFeedBack", "style": { "borderStyle": "solid", "borderWidth": "1px", "box-shadow": "5px 5px 5px grey", "marginBottom": 10, "marginLeft": 20, "marginRight": 20, "marginTop": 10, "overflow": "auto" } }, "type": "ia.display.view" } ], "custom": { "testingAlarmPriority1": "", "testingAlarmPriority2": "", "testingAlarmPriority3": "", "testingAlarmPriority4": "" }, "meta": { "name": "ContainerMeasurement" }, "position": { "tabIndex": 2 }, "props": { "mode": "percent" }, "type": "ia.container.coord" }, { "children": [ { "events": { "component": { "onRowDoubleClick": { "config": { "script": "\tselectedRowValue\u003devent[\"value\"]\n\tself.getSibling(\"textFieldEventID\").props.text \u003d selectedRowValue[\"ID\"]" }, "scope": "G", "type": "script" } } }, "meta": { "name": "tableAlarms" }, "position": { "height": 0.8758, "width": 0.7497, "x": 0.2462, "y": 0.0434 }, "props": { "pager": { "bottom": false, "initialOption": 1000 }, "selection": { "mode": "multiple interval" } }, "type": "ia.display.table" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"utilsTab_changeSelectedPLC\")" }, "scope": "G", "type": "script" } } }, "meta": { "name": "dropdownTargetPLC" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1382, "x": 0.1042, "y": 0.0515 }, "props": { "options": [ { "label": "PLC01", "value": "PLC01" }, { "label": "PLC02", "value": "PLC02" }, { "label": "PLC03", "value": "PLC03" }, { "label": "PLC09", "value": "PLC09" } ], "showClearIcon": true, "textAlign": "right", "value": "PLC01" }, "type": "ia.input.dropdown" }, { "meta": { "name": "Label_11" }, "position": { "height": 0.0318, "width": 0.0975, "x": 0.003, "y": 0.0515 }, "props": { "text": "Target PLC" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tsystem.perspective.sendMessage(\"utilsTab_init\")\n\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit" }, "position": { "height": 0.0318, "width": 0.1366, "x": 0.1045, "y": 0.8535 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Reset" }, "type": "ia.input.button" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileExtension\":event.file.name.split(\".\")[1]}\n\tsystem.perspective.sendMessage(\"utilsTab_importFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload_0" }, "position": { "height": 0.0318, "width": 0.1137, "x": 0.0027, "y": 0.0062 }, "props": { "maxUploads": 1 }, "type": "ia.input.fileupload" }, { "meta": { "name": "dropdownCommandTarget" }, "position": { "height": 0.0318, "rotate": { "anchor": "50% 169%" }, "width": 0.1382, "x": 0.1042, "y": 0.1175 }, "props": { "options": [ { "label": "PLC01/10", "value": "PLC01/10" }, { "label": "PLC01/30", "value": "PLC01/30" }, { "label": "PLC01/40", "value": "PLC01/40" }, { "label": "PLC01/50", "value": "PLC01/50" }, { "label": "PLC01/60", "value": "PLC01/60" }, { "label": "PLC01/210", "value": "PLC01/210" }, { "label": "PLC01/220", "value": "PLC01/220" }, { "label": "PLC01/AIR", "value": "PLC01/AIR" }, { "label": "PLC01/P1", "value": "PLC01/P1" }, { "label": "PLC01/S01", "value": "PLC01/S01" }, { "label": "PLC01/State", "value": "PLC01/State" }, { "label": "PLC01/ZM1", "value": "PLC01/ZM1" }, { "label": "PLC01/ZM2", "value": "PLC01/ZM2" } ], "placeholder": { "text": "Select Target..." }, "showClearIcon": true, "textAlign": "right", "value": "PLC01/30" }, "type": "ia.input.dropdown" }, { "meta": { "name": "textFieldEventState", "visible": false }, "position": { "height": 0.0318, "rotate": { "anchor": "0% 37%" }, "width": 0.013, "x": 0.2449, "y": 0.6909 }, "props": { "enabled": false, "text": "0" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_8" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.097, "x": 0.0036, "y": 0.1175 }, "props": { "text": "Command Target" }, "type": "ia.display.label" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"command\":\"synchStatus\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_20" }, "position": { "height": 0.0318, "width": 0.0652, "x": 0.1054, "y": 0.4845 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Synch status" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"command\":\"synchAlarms\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_21" }, "position": { "height": 0.0318, "width": 0.0693, "x": 0.1732, "y": 0.4845 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Synch alarms" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"command\":\"restoreFromDisconnection\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_7" }, "position": { "height": 0.0318, "width": 0.0688, "x": 0.1735, "y": 0.4078 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Reconnect" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"command\":\"simulateDisconnection\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_6" }, "position": { "height": 0.0318, "width": 0.0662, "x": 0.1046, "y": 0.4078 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Disconnect" }, "type": "ia.input.button" }, { "meta": { "name": "textFieldDisconnectionDuration" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.3694 }, "props": { "text": "5000" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_15" }, "position": { "height": 0.0288, "width": 0.1522, "x": 0.5459, "y": 0.0113 }, "props": { "text": "Alarm list", "textStyle": { "fontWeight": "bolder", "textAlign": "center" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_13" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.097, "x": 0.0036, "y": 0.1541 }, "props": { "text": "Command Code" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldCommandCode", "visible": false }, "position": { "height": 0.0298, "width": 0.0141, "x": 0.2438, "y": 0.2227 }, "props": { "enabled": false, "text": "1" }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_14" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.097, "x": 0.0036, "y": 0.1907 }, "props": { "text": "Command Params" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldCommandParameters" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.1907 }, "props": { "enabled": false, "style": { "textAlign": "right" } }, "type": "ia.input.text-field" }, { "meta": { "name": "Label_17" }, "position": { "height": 0.0318, "width": 0.097, "x": 0.0036, "y": 0.2638 }, "props": { "text": "Timestamp" }, "type": "ia.display.label" }, { "meta": { "name": "textFieldCommandTimestamp" }, "position": { "height": 0.0318, "width": 0.1011, "x": 0.1042, "y": 0.2638 }, "propConfig": { "props.text": { "binding": { "config": { "expression": "toStr(toMillis({../dateTimeInputCommandTime.props.value}))" }, "type": "expr" } } }, "props": { "style": { "textAlign": "right" } }, "type": "ia.input.text-field" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\ttimeNow\u003dsystem.date.now()\n\ttimestamp \u003d system.date.toMillis(timeNow)\n\tself.getSibling(\"textFieldCommandTimestamp\").props.text \u003d timestamp" }, "scope": "G", "type": "script" } } }, "meta": { "name": "buttonInit_2" }, "position": { "height": 0.0318, "width": 0.0328, "x": 0.2085, "y": 0.2638 }, "props": { "image": { "icon": { "color": "#000000", "path": "material/access_time" } }, "primary": false, "text": "" }, "type": "ia.input.button" }, { "meta": { "name": "dateTimeInputCommandTime" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.2273 }, "props": { "format": "YYYY-MM-DD hh:mm:ss", "formattedValue": "2022-12-23 04:14:00", "value": { "$": [ "ts", 0, 1691659021617 ], "$ts": 1671812040000 } }, "type": "ia.input.date-time-input" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tpayload\u003d{\"command\":\"sendCommand\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_15" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.3004 }, "props": { "image": { "icon": { "color": "#AAAAAA" } }, "primary": false, "text": "Send command" }, "type": "ia.input.button" }, { "meta": { "name": "Label_4" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.097, "x": 0.0036, "y": 0.9033 }, "props": { "text": "Information" }, "type": "ia.display.label" }, { "meta": { "name": "textAreaResult" }, "position": { "height": 0.0616, "width": 0.9619, "x": 0.0039, "y": 0.9324 }, "props": { "enabled": false, "text": "Init completed" }, "type": "ia.input.text-area" }, { "meta": { "name": "Label_19" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.0959, "x": 0.004, "y": 0.3694 }, "props": { "text": "Disconnection duration" }, "type": "ia.display.label" }, { "meta": { "name": "Label_20" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.0959, "x": 0.004, "y": 0.4078 }, "props": { "text": "Connection" }, "type": "ia.display.label" }, { "meta": { "name": "Label_21" }, "position": { "height": 0.0318, "rotate": { "anchor": "75% 137%" }, "width": 0.0959, "x": 0.004, "y": 0.4845 }, "props": { "text": "Sync" }, "type": "ia.display.label" }, { "meta": { "name": "Label_18" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.0839 }, "props": { "text": "Commands", "textStyle": { "fontWeight": "bolder", "textAlign": "center" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_22" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.3328 }, "props": { "text": "Comms Connection", "textStyle": { "fontWeight": "bolder", "textAlign": "center" } }, "type": "ia.display.label" }, { "meta": { "name": "Label_23" }, "position": { "height": 0.0288, "width": 0.1366, "x": 0.1046, "y": 0.4508 }, "props": { "text": "Synchronisation", "textStyle": { "fontWeight": "bolder", "textAlign": "center" } }, "type": "ia.display.label" }, { "meta": { "name": "Dropdown" }, "position": { "height": 0.0318, "width": 0.1382, "x": 0.1042, "y": 0.1541 }, "propConfig": { "props.value": { "onChange": { "enabled": null, "script": "\tself.getSibling(\"textFieldCommandCode\").props.text \u003d str(self.props.value)" } } }, "props": { "options": [ { "label": "Start", "value": 1 }, { "label": "Stop", "value": 2 }, { "label": "Reset", "value": 3 }, { "label": "Get", "value": 4 }, { "label": "Set", "value": 5 }, { "label": "Enable", "value": 6 }, { "label": "Disable", "value": 7 } ], "placeholder": { "text": "Select Command..." }, "textAlign": "right", "value": 1 }, "type": "ia.input.dropdown" }, { "meta": { "name": "Label_25" }, "position": { "height": 0.0318, "width": 0.097, "x": 0.0036, "y": 0.2273 }, "props": { "text": "Date and time" }, "type": "ia.display.label" } ], "meta": { "name": "ContainerUtils" }, "position": { "tabIndex": 3 }, "props": { "mode": "percent" }, "type": "ia.container.coord" } ], "custom": { "Admin": false, "AdminTabs": [ "Alarms", "Sources", "Sequence", "Utils" ], "Default": [ "Alarms", "Sources", "Sequence" ] }, "events": { "dom": { "onClick": { "config": { "script": "\tindex \u003d self.props.currentTabIndex\n\tif index \u003d\u003d 4:\n\t\tsystem.perspective.navigate(url \u003d \"https://w.amazon.com/bin/view/EURME/MAP/Projects/Amazon_SCADA/SCADA/Manual/CommissioningTools/\" , newTab \u003d True)\t\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "TabContainer" }, "position": { "grow": 1 }, "propConfig": { "position.display": { "binding": { "config": { "path": "parent.custom.displayUpload" }, "transforms": [ { "expression": "!{value}", "type": "expression" } ], "type": "property" } }, "props.tabs": { "binding": { "config": { "path": "this.custom.Admin" }, "transforms": [ { "code": "\t\n\tif value:\n\t\treturn self.custom.AdminTabs\n\telse:\n\t\treturn self.custom.Default", "type": "script" } ], "type": "property" } } }, "props": { "tabSize": { "height": 40, "width": 120 } }, "type": "ia.container.tab" }, { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "75px" }, "props": { "style": { "opacity": "0.73", "overflow": "auto", "textShadow": "#AAAAAA 1px 2px 2px" }, "text": "Commissioning Tool", "textStyle": { "fontSize": 30, "textAlign": "center" } }, "type": "ia.display.label" }, { "children": [ { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Start From Fresh ?", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "children": [ { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Upload Alarms.csv", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"alarmsTab_importFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload" }, "position": { "grow": 1 }, "props": { "style": { "backgroundColor": "#F2F3F4", "borderStyle": "none", "classes": "FadeInFast, background, background-none", "cursor": "pointer", "max-height": "400px", "overflow": "visible" }, "supportedFileTypes": [ "csv" ] }, "type": "ia.input.fileupload" } ], "meta": { "name": "FlexContainer" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "margin": "10px", "padding": "10px" } }, "type": "ia.container.flex" }, { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Upload Sources.csv", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"sourcesTab_importFile\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload" }, "position": { "grow": 1 }, "props": { "style": { "backgroundColor": "#F2F3F4", "borderStyle": "none", "classes": "FadeInFast, background, background-none", "cursor": "pointer", "max-height": "400px", "overflow": "visible" }, "supportedFileTypes": [ "csv" ] }, "type": "ia.input.fileupload" } ], "meta": { "name": "FlexContainer_0" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "margin": "10px", "padding": "10px" } }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer" }, "position": { "grow": 1 }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "borderBottomLeftRadius": "2px", "borderBottomRightRadius": "2px", "borderColor": "#D4D4D4", "borderStyle": "dotted", "borderTopLeftRadius": "2px", "borderTopRightRadius": "2px", "borderWidth": "1px", "margin": "25px", "max-height": "500px" } }, "type": "ia.container.flex" }, { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Pick Up Where You Left Off ?", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "children": [ { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Upload Alarms Export", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"uploadBackup\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload" }, "position": { "grow": 1 }, "props": { "style": { "backgroundColor": "#F2F3F4", "borderStyle": "none", "classes": "FadeInFast, background, background-none", "cursor": "pointer", "max-height": "400px", "overflow": "visible" }, "supportedFileTypes": [ "csv" ] }, "type": "ia.input.fileupload" } ], "meta": { "name": "FlexContainer" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "margin": "10px", "padding": "10px" } }, "type": "ia.container.flex" }, { "children": [ { "meta": { "name": "Header" }, "position": { "basis": "32px" }, "props": { "text": "Upload Sources Export", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "events": { "component": { "onFileReceived": { "config": { "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"uploadBackup\",payload)" }, "scope": "G", "type": "script" } } }, "meta": { "name": "FileUpload" }, "position": { "grow": 1 }, "props": { "style": { "backgroundColor": "#F2F3F4", "borderStyle": "none", "classes": "FadeInFast, background, background-none", "cursor": "pointer", "max-height": "400px", "overflow": "visible" }, "supportedFileTypes": [ "csv" ] }, "type": "ia.input.fileupload" } ], "meta": { "name": "FlexContainer_0" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "margin": "10px", "padding": "10px" } }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer" }, "position": { "grow": 1 }, "props": { "style": { "max-height": "value" } }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer_0" }, "position": { "grow": 1 }, "props": { "direction": "column", "style": { "borderBottomLeftRadius": "2px", "borderBottomRightRadius": "2px", "borderColor": "#D4D4D4", "borderStyle": "dotted", "borderTopLeftRadius": "2px", "borderTopRightRadius": "2px", "borderWidth": "1px", "margin": "25px", "max-height": "500px" } }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer" }, "position": { "basis": "200px", "grow": 1 }, "props": { "style": { "margin": "10px", "padding": "10px" } }, "type": "ia.container.flex" }, { "children": [ { "meta": { "name": "Footer" }, "props": { "style": { "margin": "10px", "max-height": "75px", "overflow": "visible" }, "text": "Required Data ", "textStyle": { "textAlign": "center" } }, "type": "ia.display.label" }, { "children": [ { "meta": { "name": "AlarmsData" }, "position": { "basis": "200px" }, "propConfig": { "props.selected": { "binding": { "config": { "path": "session.custom.alarms" }, "transforms": [ { "code": "\tif value :\n\t\treturn True\n\telse:\n\t\treturn False", "type": "script" } ], "type": "property" } } }, "props": { "enabled": false, "text": "Alarms Data", "textPosition": "left" }, "type": "ia.input.checkbox" }, { "meta": { "name": "SourceData" }, "position": { "basis": "200px" }, "propConfig": { "props.selected": { "binding": { "config": { "path": "session.custom.sources" }, "transforms": [ { "code": "\tif value :\n\t\treturn True\n\telse:\n\t\treturn False", "type": "script" } ], "type": "property" } } }, "props": { "enabled": false, "text": "Source Data", "textPosition": "left" }, "type": "ia.input.checkbox" } ], "meta": { "name": "FlexContainer_0" }, "position": { "grow": 1 }, "props": { "justify": "space-around", "style": { "margin": "10px", "max-height": "75px" } }, "type": "ia.container.flex" }, { "children": [ { "events": { "component": { "onActionPerformed": { "config": { "script": "\tself.session.custom.alarms \u003d []\n\tself.session.custom.sources \u003d []" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button_0" }, "position": { "basis": "120px", "grow": 1 }, "propConfig": { "custom.Start": { "binding": { "config": { "expression": "try(if(len({/root.custom.alarms})\u003e0 \u0026\u0026 len({/root.custom.sources})\u003e0, True,False),False)" }, "type": "expr" } } }, "props": { "image": { "icon": { "path": "material/delete_forever" } }, "primary": false, "style": { "margin": "5px", "max-width": "120px" }, "text": "Clear" }, "type": "ia.input.button" }, { "events": { "component": { "onActionPerformed": { "config": { "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d False" }, "scope": "G", "type": "script" } } }, "meta": { "name": "Button" }, "position": { "basis": "120px", "grow": 1 }, "propConfig": { "custom.Start": { "binding": { "config": { "expression": "try(if(len({/root.custom.alarms})\u003e0 \u0026\u0026 len({/root.custom.sources})\u003e0, True,False),False)" }, "type": "expr" } }, "props.enabled": { "binding": { "config": { "path": "this.custom.Start" }, "transforms": [ { "code": "\treturn value", "type": "script" } ], "type": "property" } } }, "props": { "image": { "icon": { "path": "material/play_circle_outline" } }, "style": { "margin": "5px", "max-width": "120px" }, "text": "Start" }, "type": "ia.input.button" } ], "meta": { "name": "FlexContainer_1" }, "position": { "grow": 1 }, "props": { "justify": "flex-end", "style": { "margin": "20px", "max-height": "75px" } }, "type": "ia.container.flex" } ], "meta": { "name": "FlexContainer_1" }, "position": { "basis": "200px" }, "props": { "direction": "column" }, "type": "ia.container.flex" }, { "meta": { "name": "EmbeddedView" }, "position": { "basis": "150px" }, "props": { "path": "Main-Views/Commissioning Tool/UserFeedBack", "style": { "margin": "10px", "overflow": "auto", "padding": "10px" } }, "type": "ia.display.view" } ], "meta": { "name": "FlexContainer" }, "position": { "basis": "200px", "grow": 1 }, "propConfig": { "position.display": { "binding": { "config": { "path": "parent.custom.displayUpload" }, "type": "property" } } }, "props": { "direction": "column", "style": { "margin": "10px", "padding": "5-x" } }, "type": "ia.container.flex" } ], "custom": { "displayUpload": true }, "events": { "system": { "onStartup": { "config": { "script": "\t\n\tif not self.session.custom.sources or not self.session.custom.alarms:\n\t\tself.custom.displayUpload \u003d True \n\telse:\n\t\tself.custom.displayUpload \u003d False\n\t" }, "scope": "G", "type": "script" } } }, "meta": { "name": "root" }, "position": { "x": 0.0412, "y": 0.001 }, "propConfig": { "custom.alarms": { "binding": { "config": { "path": "session.custom.alarms" }, "type": "property" } }, "custom.sources": { "binding": { "config": { "path": "session.custom.sources" }, "type": "property" } } }, "props": { "direction": "column" }, "scripts": { "customMethods": [ { "name": "sendConsoleMsg", "params": [ "Msg" ], "script": "\t# implement your method here\n\tpayload \u003d {\n\t\t\t\t\"Msg\":Msg\n\t\t\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" } ], "extensionFunctions": null, "messageHandlers": [ { "messageType": "alarmsTab_init", "pageScope": true, "script": "\tresult\u003d \"Resetting Alarms Page ...\"\n\t\n\t\n\ttry:\n\t import sys\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t #clearing all fields\n\t\n\t targetContainer.getChild(\"textFieldTargetPLC\").props.text \u003d \"\"\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value \u003d None\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_alarmPriority\").props.text \u003d \"\"\n\t targetContainer.getChild(\"DateTimeInput\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\u003d \"\"\n\t \n\t targetContainer.getChild(\"tableAlarms\").props.data \u003d []\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\n\tself.sendConsoleMsg(result)\n\n\n", "sessionScope": false, "viewScope": false }, { "messageType": "setTimeNow", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting Time to current time\"\n\ttry:\n\t containerName \u003d payload[\"containerName\"]\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\t targetName\u003dpayload[\"targetName\"]\n\t timeNow\u003dsystem.date.now()\n\t timestamp \u003d system.date.toMillis(timeNow)\n\t targetContainer.getChild(targetName).props.value \u003d timeNow\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "setEventState", "pageScope": true, "script": "\t\n\tresult \u003d \"Setting Event State on %s to %s\"%(payload[\"containerName\"] , payload[\"status\"] )\n\tstatus \u003d payload[\"status\"]\n\tcontainerName \u003d payload[\"containerName\"]\n\t\n\tself.getChild(\"TabContainer\").getChild(containerName).getChild(\"textFieldEventsCommandParams_Status\").props.text \u003d status\n\t\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "sendSimulationEvent", "pageScope": true, "script": "\n\t\n\tself.sendConsoleMsg(\"Sending an Event ...\")\n\t\n\tcontainerName \u003d payload[\"containerName\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\tsimulationEventStatus\u003dpayload[\"status\"]\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\ttimestamp \u003d targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timestamp\n\t\n\tplc\u003dstr(targetContainer.getChild(\"textFieldTargetPLC\").props.text)\n\teventParameters_target\u003d\"\"\n\tif containerName\u003d\u003d\"ContainerSources\":\n\t eventParameters_target \u003d str(targetContainer.getChild(\"textField_SelectedTarget\").props.text)#review\n\telse:\n\t eventParameters_target \u003d str(targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value)\n\tcommandTarget\u003dplc+\"/-1\"#-1 is used by E2C application to identify a simulation command\n\teventParameters_timestamp\u003dstr(targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text)\n\teventParameters_eventID\u003dstr(targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text)\n\teventParameters_status\u003dstr(simulationEventStatus)\n\teventParametersString\u003deventParameters_target+\",\"+eventParameters_timestamp+\",\"+eventParameters_eventID+\",\"+eventParameters_status\n\tcommandParams \u003d \"EVENTS,\"+eventParametersString\n\tactionCode \u003d 5 #SET\n\tparameters\u003d{}\n\tparameters[\"commandTarget\"] \u003d commandTarget\n\tparameters[\"commandCode\"] \u003d actionCode\n\tparameters[\"commandParams\"] \u003d commandParams\n\n\tself.sendConsoleMsg(\"Event Parameters : %s\"%str(parameters))\n\t\n\tresponse \u003d Commands.button_commands.send_request(whid,actionCode,parameters)\n\t\n\tself.sendConsoleMsg(response)\n", "sessionScope": false, "viewScope": false }, { "messageType": "setTestResult", "pageScope": true, "script": "\timport sys\n\t\n\tcontainerName \u003d payload[\"containerName\"]\n\ttargetTable\u003d\"tableAlarms\"\n\tif containerName\u003d\u003d\"ContainerSources\":\n\t\ttargetTable\u003d\"tableSources\"\n\ttestResult\u003dpayload[\"testResult\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\t\n\tresult\u003d\"Setting test results for %s\"%targetTable\n\t\n\ttry:\n\t\ttargetAlarmIDLastTest\u003dtargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text\n\t\tcurrentDataJSON \u003d targetContainer.getChild(targetTable).props.data\n\t\tselectedRowsJSON\u003dtargetContainer.getChild(targetTable).props.selection.data\t\t\n\t\tfor indexSelectedRow in range(len(selectedRowsJSON)):\n\t\t\tcurrentSelectedRowDic\u003dselectedRowsJSON[indexSelectedRow]\n\t\t\trowNumber\u003dint(currentSelectedRowDic[\"Row\"])\n\t\t\tnewData\u003dcurrentDataJSON[rowNumber]\t\t\t\n\t\t\tcurrentDataJSON[rowNumber][\"Tested_date_UTC\"]\u003dsystem.date.format(system.date.now(),\"YYYY-MM-DD HH:mm:ss\")\n\t\t\tcurrentDataJSON[rowNumber][\"Result\"]\u003dtestResult\n\texcept:\n\t\texc_type, exc_obj, tb \u003d sys.exc_info()\n\t\tlineno \u003d tb.tb_lineno\n\t\terrorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t\tself.sendConsoleMsg(errorMessage)\n\t\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "exportFile", "pageScope": true, "script": "\timport sys\n\t\n\tcontainerName\u003dpayload[\"containerName\"]\n\ttargetTable\u003dpayload[\"targetTable\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t\n\tfilePrefix\u003d\"Alarms_Testing_\"\n\tif targetTable\u003d\u003d\"tableSources\":\n\t filePrefix\u003d\"Sources_Testing_\"\n\t\n\ttry:\n\t columns \u003d targetContainer.getChild(targetTable).props.columns\n\t headers\u003d[]\n\t for column in columns:\n\t headers.append(column.field)\n\t rows \u003d targetContainer.getChild(targetTable).props.data\n\t data\u003d[]\n\t for row in rows:\n\t rowContent\u003d[]\n\t for column in columns:\n\t rowContent.append(row[column.field])\n\t data.append(rowContent)\n\t\n\t ds\u003dsystem.dataset.toDataSet(headers, data)\n\t Excel_xlsx \u003d system.dataset.toCSV(ds,True)\n\t fileName\u003dfilePrefix+whid\n\t fileName\u003dfileName+\"_\"+str(targetContainer.getChild(\"textFieldTargetPLC\").props.text)\n\t fileName\u003dfileName+\"_\"+system.date.format(system.date.now(),\u0027yyyyMMddHHmmss\u0027)+\".csv\"\n\t \n\t system.perspective.download(fileName,Excel_xlsx)\n\t \n\t result\u003d\"Exporting %s\"%fileName\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "alarmsTab_importFile", "pageScope": true, "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\theaders \u003d [\"Row\",\"ID\",\"Name\",\"Priority\",\"Type\",\"Tested date\",\"Result\",\"Notes\" ]\n\trows\u003d[]\n\ttableContent\u003d[]\n\tresult\u003d\"Importing file: %s \"%payload[\"fileName\"]\n\t\n\tself.sendConsoleMsg(result)\n\t\t\n\ttry:\n\t rowNumber\u003d0\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileName\u003dpayload[\"fileName\"]\n\t \n\t fileExtension \u003d fileName.split(\".\")[1]\n\t if fileName!\u003d\"alarms.csv\":\n\t result+\u003d\"Invalid file name. Please select alarms.csv file\"\n\t targetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)\n\t return\n\t\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t for indexRow in range(1,len(rowsValues)):\n\t Row\u003drowNumber\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t ID\u003drowFields[0]\n\t Name\u003drowFields[1]\n\t Priority\u003d\"Invalid\"\n\t\n\t if int(rowFields[2])\u003d\u003d1:\n\t Priority\u003d\"Diagnostic\"\n\t if int(rowFields[2])\u003d\u003d2:\n\t Priority\u003d\"Low\"\n\t if int(rowFields[2])\u003d\u003d3:\n\t Priority\u003d\"Medium\"\n\t if int(rowFields[2])\u003d\u003d4:\n\t Priority\u003d\"High\"\n\t Type\u003d\"Default\"\n\t if rowFields[3]\u003d\u003d\"1\":\n\t Type\u003d\"Critical\"\n\t TestedDate\u003d\"\"\n\t TestedResult\u003d\"\"\n\t Notes\u003d\"\"\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowNumber\n\t rowContent[\"ID\"]\u003dID\n\t rowContent[\"Name\"]\u003dName\n\t rowContent[\"Priority\"]\u003dPriority\n\t rowContent[\"Type\"]\u003dType\n\t rowContent[\"Tested_date_UTC\"]\u003d\"\"\n\t rowContent[\"Result\"]\u003d\"\"\n\t rowContent[\"Notes\"]\u003d\"\"\n\t tableContent.append(rowContent)\n\t rowNumber+\u003d1\n\n\t self.session.custom.alarms \u003d tableContent\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t\n\tresult \u003d \"File imported succesfully\" \t\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "sourcesTab_importFile", "pageScope": true, "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\tresult\u003d\"\"\n\ttableContent\u003d[]\n\ttry:\n\t rowNumber\u003d0\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileName\u003dpayload[\"fileName\"]\n\t \n\t result\u003d\"Importing file: %s \"%payload[\"fileName\"]\n\t \t\n\t self.sendConsoleMsg(result)\n\t fileExtension \u003d fileName.split(\".\")[1]\n\t\n\t\n\t if fileName!\u003d\"sources.csv\":\n\t result \u003d\"Invalid file name. Please select sources.csv file\"\n\t self.sendConsoleMsg(result)\n\t return\n\t\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tagProviderSourcesList\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowNumber\n\t rowContent[\"ID\"]\u003drowFields[0]\n\t rowContent[\"Source\"]\u003drowFields[1]\n\t rowContent[\"Tested_date_UTC\"]\u003d\"\"\n\t rowContent[\"Result\"]\u003d\"\"\n\t rowContent[\"Notes\"]\u003d\"\"\n\t tableContent.append(rowContent)\n\t tagProviderSourcesList.append(rowFields[1])\n\t rowNumber+\u003d1\n\t self.session.custom.sources \u003d tableContent\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \t\n\tresult \u003d \"File imported succesfully\" \t\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "sourcesTab_init", "pageScope": true, "script": "\tresult\u003d \"Resetting Sources Page ...\"\n\ttry:\n\t import sys\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\t #clearing all fields\n\t targetContainer.getChild(\"textFieldTargetPLC\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_SelectedTarget\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_alarmPriority\").props.text \u003d \"\"\n\t targetContainer.getChild(\"DateTimeInput\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\u003d \"\"\n\t targetContainer.getChild(\"StatusIcon\").props.params.tagProps[0]\u003d\"\"\n\t #Creating source table\n\t targetContainer.getChild(\"tableSources\").props.data \u003d []\n\t targetContainer.custom.testingAlarmPriority1 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority2 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority3 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority4 \u003d \u0027\u0027\n\t result+\u003d\"Init completed\"\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "alarmsTab_selectAlarm", "pageScope": true, "script": "\t\n\t\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d payload[\"ID\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d payload[\"Name\"]\n\ttargetContainer.getChild(\"textField_alarmPriority\").props.text\u003dpayload[\"Priority\"]\n\t\n\n\t\n\tself.sendConsoleMsg(\"Setting Alarm ID, Description \u0026 Priority \")", "sessionScope": false, "viewScope": false }, { "messageType": "sourcesTab_selectSource", "pageScope": true, "script": "\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\tself.getChild(\"TabContainer\").getChild(\"ContainerSources\").getChild(\"textField_SelectedTarget\").props.text \u003d payload[\"Source\"]\n\ttargetContainer.getChild(\"StatusIcon\").props.params.tagProps[0]\u003dpayload[\"Source\"]\n\t\n\tself.sendConsoleMsg(\"Setting Source ID\")", "sessionScope": false, "viewScope": false }, { "messageType": "sourcesTab_setAlarm", "pageScope": true, "script": "\t# implement your handler here\n\ttargetAlarm\u003dpayload[\"alarm\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\ttargetContainer.getChild(\"textField_alarmPriority\").props.text\u003dtargetAlarm[\"priority\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d targetAlarm[\"id\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text\u003dtargetAlarm[\"message\"]\n\t\n\tself.sendConsoleMsg(\"Setting Alarm ID, Description \u0026 Priority \")", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_init", "pageScope": true, "script": "\timport sys\n\ttry:\n\t\tresult\u003d\"Restting Sequence Page \"\n\t\tself.sendConsoleMsg(result)\n\t\t\n\t\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t\t#Check if is a valid SCADA 2.0 Tag provider\n\t\t#Filling up the dropdown with the list of the PLCs\n\t\ttagProvidersPLCs \u003d system.tag.browse(path \u003dselectedTagProvider , filter \u003d {})\n\t\ttagProviderPLCsList\u003d[]\n\t\tfor tagProvidersPLC in tagProvidersPLCs.getResults():\n\t\t fullPath\u003dstr(tagProvidersPLC[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t\t entry\u003d{}\n\t\t entry[\u0027value\u0027] \u003d fullPath\n\t\t entry[\u0027label\u0027] \u003d fullPath\n\t\t tagProviderPLCsList.append(entry)\n\t\ttargetContainer.getChild(\"dropdownTargetPLC\").props.options \u003d tagProviderPLCsList\n\t\tselectedValue \u003d tagProviderPLCsList[0][\"label\"]\n\t\ttargetContainer.getChild(\"dropdownTargetPLC\").props.value \u003d selectedValue\n\t\t#Filling up the dropdown with the list of the sources\n\t\ttagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedValue , filter \u003d {})\n\t\ttagProviderSourcesList\u003d[]\n\t\tfor tagProvidersSource in tagProvidersSources.getResults():\n\t\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t\t entry\u003d{}\n\t\t entry[\u0027value\u0027] \u003d fullPath\n\t\t entry[\u0027label\u0027] \u003d fullPath\n\t\t tagProviderSourcesList.append(entry)\n\t\ttargetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\t\n\t\n\t\ttargetContainer.getChild(\"tableSequence\").props.data \u003d []\n\t\ttargetContainer.custom.testingAlarmPriority1 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority2 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority3 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority4 \u003d \u0027\u0027\n\t\tresult \u003d\"Init completed\"\n\t\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t \n\t self.sendConsoleMsg(errorMessage)\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_importFile", "pageScope": true, "script": "\timport sys\n\tfrom collections import OrderedDict\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\ttry:\n\t result\u003d\"Importing file Sequence Backup ... \"\n\t\n\t self.sendConsoleMsg(result)\n\t rowNumber\u003d0\n\t result\u003d\"\"\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileExtension\u003dpayload[\"fileExtension\"]\n\t if fileExtension\u003d\u003d\"csv\":\n\t self.sendConsoleMsg(\"File has correct extension . Importing ...\") \n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tableContent\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t \n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t system.perspective.print(rowFields)\n\t messageType\u003drowFields[6]\n\t rowContent \u003d OrderedDict(\n\t [\n\t (\"Seq\",str(rowFields[13])),\n\t (\"Type\", messageType),\n\t (\"When\",rowFields[7]),\n\t (\"Source\", rowFields[5]),\n\t (\"CurrentState\",\"\"),\n\t (\"ReasonCode\", \"\"),\n\t (\"CurrentMode\", \"\"),\n\t (\"EventID\", \"\"),\n\t (\"EventState\", \"\"),\n\t (\"MeasurementName\",\"\"),\n\t (\"SamplingInterval\",\"\"),\n\t (\"Unit\",\"\"),\n\t (\"DeltaValue\",\"\"),\n\t (\"Selected\", \"\")\n\t ]\n\t )\n\t if messageType\u003d\u003d\"StateChanged\":\n\t rowContent[\"CurrentState\"]\u003drowFields[8]\n\t rowContent[\"ReasonCode\"]\u003drowFields[4]\n\t if messageType\u003d\u003d\"ModeChanged\":\n\t rowContent[\"CurrentMode\"]\u003drowFields[0]\n\t if messageType\u003d\u003d\"Event\":\n\t rowContent[\"EventID\"]\u003drowFields[9]\n\t rowContent[\"EventState\"]\u003d rowFields[1]\n\t if messageType\u003d\u003d\"MeasurementEvent\":\n\t rowContent[\"MeasurementName\"]\u003drowFields[10]\n\t rowContent[\"SamplingInterval\"]\u003drowFields[2]\n\t rowContent[\"Unit\"]\u003drowFields[3]\n\t rowContent[\"DeltaValue\"]\u003d rowFields[11]\n\t tableContent.append(rowContent)\n\t \ttargetContainer.getChild(\"tableSequence\").props.data \u003d tableContent\n\t else:\n\t \tresult\u003d\"Importing file must be a CSV file not a %s\"%(fileExtension) \n\t \t\n\t \tself.sendConsoleMsg(result)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\tself.sendConsoleMsg(\"Sequence Import Sucessful\")", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_sendEvent", "pageScope": true, "script": "\t# implement your handler here\n\timport time\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003d str(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\tcommandTarget\u003d str(targetContainer.getChild(\"dropdownTargetPLC\").props.value)+\"/SPRK\"\n\tinterval \u003d targetContainer.getChild(\"textFieldInterval\").props.value\n\t\n\tselectedRows \u003d targetContainer.getChild(\"tableSequence\").props.data\n\tresult\u003d\"\"\n\ttry:\n\t\tactionCode \u003d 5 #SET\n\t\tfor selectedRow in selectedRows:\n\t\t eventType\u003dselectedRow[\"Type\"]\n\t\t timestamp \u003d selectedRow[\"When\"]\n\t\t source \u003d selectedRow[\"Source\"]\n\t\t indexSeletectedRow\u003dint(selectedRow[\"Seq\"])\n\t\t targetContainer.getChild(\"tableSequence\").props.selection.selectedRow \u003d indexSeletectedRow\n\t\t targetContainer.getChild(\"rowOfLastMessageSent\").props.value \u003d indexSeletectedRow\n\t\t if eventType\u003d\u003d\"StateChanged\":\n\t\t currentState \u003d selectedRow[\"CurrentState\"]\n\t\t reasonCode \u003d selectedRow[\"ReasonCode\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(currentState)+\",\"+str(reasonCode)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"STATE,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"ModeChanged\":\n\t\t currentMode \u003d selectedRow[\"CurrentMode\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(currentMode)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"MODE,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"Event\":\n\t\t eventID \u003d selectedRow[\"EventID\"]\n\t\t eventState \u003d selectedRow[\"EventState\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(timestamp)+\",\"+str(eventID)+\",\"+str(eventState)\n\t\t commandParams \u003d \"EVENTS,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"MeasurementEvent\":\n\t\t measurementName \u003d selectedRow[\"MeasurementName\"]\n\t\t samplingInterval \u003d selectedRow[\"SamplingInterval\"]\n\t\t unit \u003d selectedRow[\"Unit\"]\n\t\t deltaValue \u003d selectedRow[\"DeltaValue\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(measurementName)+\",\"+str(samplingInterval)+\",\"+str(unit)+\",\"+str(deltaValue)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"MEASUREMENT,\"+eventParametersString\n\t\t parameters\u003d{}\n\t\t parameters[\"commandTarget\"] \u003d commandTarget\n\t\t parameters[\"commandCode\"] \u003d actionCode\n\t\t parameters[\"commandParams\"] \u003d commandParams\n\t\t\n\t\t self.sendConsoleMsg(\"UI : sending command to whid\u003d\"+whid+\",actionCode\"+str(actionCode)+\",parameters\u003d\"+str(parameters))\n\t\t response \u003d Commands.button_commands.send_request(whid,actionCode,parameters)\n\t\t self.sendConsoleMsg(response)\n\t\t time.sleep(interval)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_exportFile", "pageScope": true, "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tresult\u003d\"\"\n\tresult\u003d\"Exporting Sequence data \"\n\tself.sendConsoleMsg(result)\n\ttry:\n\t fileContent\u003dNone\n\t arrayElements \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t whid \u003d str(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t fileName\u003d\"Sequence_Testing_\"+whid+\"_\"+str(targetContainer.getChild(\"dropdownTargetPLC\").props.value)+\"_\"+system.date.format(system.date.now(),\u0027yyyyMMddHHmmss\u0027)\n\t \n\t fileName+\u003d\".csv\"\n\t headers\u003d[]\n\t rows\u003d[]\n\t for element in arrayElements:\n\t keys\u003delement.keys()\n\t if len(headers)\u003d\u003d0:\n\t headers\u003dkeys\n\t row\u003d[]\n\t for key in keys:\n\t row.append(element[key])\n\t rows.append(row)\n\t\n\t ds \u003d system.dataset.toDataSet(headers,rows)\n\t fileContent \u003d system.dataset.toCSV(ds)\n\t system.perspective.download(fileName,fileContent)\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t return\n\t \n\tresult\u003d\"Export Succesful \"\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_addRow", "pageScope": true, "script": "\tsystem.perspective.print(\"Add Row ...\")\n\timport sys\n\tfrom collections import OrderedDict\n\ttypeElement \u003d payload[\"messageType\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tresult\u003d\"Adding a \"\n\t\n\ttry:\n\t tableElements \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t result \u003d str(type(tableElements))\n\t rowIndex\u003d0\n\t if tableElements is None:\n\t tableElements\u003d[]\n\t else:\n\t rowIndex \u003d len(tableElements)\n\t\n\t newElement \u003d OrderedDict(\n\t [\n\t (\"Seq\",str(rowIndex)),\n\t (\"Type\", typeElement),\n\t (\"When\",targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text),\n\t (\"Source\", targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value),\n\t (\"CurrentState\",\"\"),\n\t (\"ReasonCode\", \"\"),\n\t (\"CurrentMode\", \"\"),\n\t (\"EventID\", \"\"),\n\t (\"EventState\", \"\"),\n\t (\"MeasurementName\",\"\"),\n\t (\"SamplingInterval\",\"\"),\n\t (\"Unit\",\"\"),\n\t (\"DeltaValue\",\"\"),\n\t (\"Selected\",False)\n\t ]\n\t )\n\t \n\t \n\t result\u003d\"Adding a %s \"%typeElement\n\t self.sendConsoleMsg(result)\n\t \n\t tableElements.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\n", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_deleteRows", "pageScope": true, "script": "\timport sys\n\ttry:\n\t \n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t result\u003d\"\"\n\t oldArray \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d [payload[\"index\"]]\n\t \n\t result \u003d \"Removing row %s\"%selectedRows\n\t self.sendConsoleMsg(result)\n\t newArray\u003d[]\n\t rowIndexesToBeDeleted\u003d[]\n\t for selectedRow in selectedRows:\n\t rowIndexesToBeDeleted.append(int(selectedRow))\n\t newRowIndex\u003d0\n\t for element in oldArray:\n\t rowIndex\u003dint(element[\"Seq\"])\n\t if not (rowIndex in rowIndexesToBeDeleted):\n\t newElement\u003d dict(element)\n\t newElement[\"Seq\"]\u003dstr(newRowIndex)\n\t newRowIndex+\u003d1\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_setTimestampInTable", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting TimeStamp \u0026 Source ID for all items in sequence ...\"\n\tself.sendConsoleMsg(result)\n\t\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t timestampOffset \u003d targetContainer.getChild(\"timestampOffset\").props.value * 1000\n\t currentTimestamp \u003d long(targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text)\n\t commandTarget \u003d targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"]:\n\t newElement[\"When\"]\u003dstr(currentTimestamp)\n\t newElement[\"Source\"]\u003dcommandTarget\n\t currentTimestamp+\u003dtimestampOffset\n\t \n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_setState", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting State and ReasonCode\"\n\tself.sendConsoleMsg(result)\n\tSTATE_TYPE \u003d \"StateChanged\"\n\ttargetState\u003dpayload[\"targetState\"]\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d targetContainer.getChild(\"tableSequence\").props.selection.data\n\t reasonCode \u003d targetContainer.getChild(\"dropdownReasonCode\").props.value\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d STATE_TYPE :\n\t newElement[\"CurrentState\"]\u003dtargetState\n\t newElement[\"ReasonCode\"]\u003d str(reasonCode)\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_setMeasurementInTable", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting Mesurement Name , Sample Interval , Unit \u0026 Delta Values\"\n\tself.sendConsoleMsg(result)\n\tMEASUREMENT_EVENT\u003d \"MeasurementEvent\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t newArray\u003d[]\n\t measurementName \u003d targetContainer.getChild(\"dropdownMeasurementName\").props.value\n\t delta \u003d targetContainer.getChild(\"delta\").props.value\n\t sampling \u003d targetContainer.getChild(\"sampling\").props.value\n\t unit \u003d targetContainer.getChild(\"textFieldUnit\").props.text\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d MEASUREMENT_EVENT:\n\t newElement[\"MeasurementName\"]\u003dmeasurementName\n\t newElement[\"SamplingInterval\"]\u003dstr(sampling)\n\t newElement[\"Unit\"]\u003dunit\n\t newElement[\"DeltaValue\"]\u003dstr(delta)\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_setEventState", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting Event ID \u0026 Event State\"\n\tself.sendConsoleMsg(result)\n\ttargetEventState\u003dpayload[\"targetEventState\"]\n\tEVENT_TYPE \u003d \"Event\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t eventID \u003d targetContainer.getChild(\"eventID\").props.value\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d EVENT_TYPE:\n\t newElement[\"EventID\"]\u003deventID\n\t newElement[\"EventState\"]\u003dtargetEventState\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", "sessionScope": false, "viewScope": false }, { "messageType": "utilsTab_handleCommands", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t command \u003d payload[\"command\"]\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t whid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t\n\t PLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t targetSimulation \u003d PLC+\"/-1\"#-1 is used by E2C application to identify a simulation command\n\t commandTarget\u003dtargetContainer.getChild(\"dropdownCommandTarget\").props.value\n\t commandCode\u003dtargetContainer.getChild(\"textFieldCommandCode\").props.text\n\t commandParameters\u003dtargetContainer.getChild(\"textFieldCommandParameters\").props.text\n\t commandTimestamp\u003dtargetContainer.getChild(\"textFieldCommandTimestamp\").props.text\n\t eventSource\u003dtargetContainer.getChild(\"dropdownEventsSource\").props.value\n\t eventTimestamp\u003dtargetContainer.getChild(\"textFieldEventTimestamp\").props.text\n\t eventID\u003dtargetContainer.getChild(\"textFieldEventID\").props.text\n\t eventState\u003dtargetContainer.getChild(\"textFieldEventState\").props.text\n\t disconnectionDuration\u003dtargetContainer.getChild(\"textFieldDisconnectionDuration\").props.text\n\t\n\t\n\t if command\u003d\u003d\"synchStatus\":\n\t commandParameters \u003d \"SYNCH,STATUS\"\n\t actionCode \u003d 1 #Start\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t\n\t if command\u003d\u003d\"synchAlarms\":\n\t commandParameters \u003d \"SYNCH,ALARMS\"\n\t actionCode \u003d 1 #Start\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"simulateDisconnection\":\n\t commandParams \u003d \"DISCONNECTION,\"+str(disconnectionDuration)\n\t actionCode \u003d 6 #Enable\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"restoreFromDisconnection\":\n\t commandParams \u003d \"DISCONNECTION\"\n\t actionCode \u003d 7 #Disable\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"sendCommand\":\n\t actionCode \u003d commandCode\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d commandTarget\n\t functionParameters[\"commandCode\"] \u003d commandCode\n\t functionParameters[\"commandParams\"] \u003d \u0027\u0027\n\t functionParameters[\"commandTimestamp\"] \u003d commandTimestamp\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"sendAlarm\":\n\t actionCode \u003d 5 #SET\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d \"EVENTS,\"+str(eventSource)+\",\"+str(eventTimestamp)+\",\"+str(eventID)+\",\"+str(eventState)\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d result", "sessionScope": false, "viewScope": false }, { "messageType": "utilsTab_importFile", "pageScope": true, "script": "\t# implement your handler hereimport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\theaders \u003d [\"Row\",\"ID\",\"Name\",\"Priority\",\"Type\" ]\n\trows\u003d[]\n\ttry:\n\t\tds\u003dsystem.dataset.toDataSet(headers,rows)\n\t\trowNumber\u003d0\n\t\tresult\u003d\"\"\n\t\tfileContent \u003d payload[\"fileContent\"]\n\t\tfileExtension\u003dpayload[\"fileExtension\"]\n\t\tif fileExtension\u003d\u003d\"json\":\n\t\t\t#Importing from a configuration file\n\t\t\tcontentJSON \u003d system.util.jsonDecode(fileContent)\n\t\t\talarmList\u003dcontentJSON[\u0027alarmList\u0027]\n\t\t\tfor alarm in alarmList:\n\t\t\t\tRow\u003drowNumber\n\t\t\t\tID\u003dalarm[\"id\"]\n\t\t\t\tName\u003dalarm[\"message\"]\n\t\t\t\tPriority\u003d\"Invalid\"\n\t\t\t\t\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"1\":\n\t\t\t\t\tPriority\u003d\"Diagnostic\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"2\":\n\t\t\t\t\tPriority\u003d\"Low\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"3\":\n\t\t\t\t\tPriority\u003d\"Medium\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"4\":\n\t\t\t\t\tPriority\u003d\"High\"\n\t\t\t\tType\u003d\"Default\"\n\t\t\t\tif alarm[\"type\"]\u003d\u003d\"1\":\n\t\t\t\t\tType\u003d\"Critical\"\n\t\t\t\trows.append([Row,ID,Name,Priority,Type])\n\t\t\t\trowNumber+\u003d1\t\t\n\t\tds \u003d system.dataset.toDataSet(headers,rows)\n\t\ttargetContainer.getChild(\"tableAlarms\").props.data \u003d ds\n\texcept:\n\t\texc_type, exc_obj, tb \u003d sys.exc_info()\n\t\tlineno \u003d tb.tb_lineno\n\t\terrorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t\tresult +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", "sessionScope": false, "viewScope": false }, { "messageType": "utilsTab_init", "pageScope": true, "script": "\ttry:\n\t import sys\n\t result\u003d\"\"\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t #Check if is a valid SCADA 2.0 Tag provider\n\t validSCADATagProvider\u003dTrue\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"Configuration/FC\"):\n\t result+\u003d\"The tag \\\"Configuration/FC\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"System/aws_data\"):\n\t result+\u003d\"The tag \\\"System/aws_data\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"System/device_count\"):\n\t result+\u003d\"The tag \\\"System/device_count\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider:\n\t #Extracting the target site\n\t #Filling up the dropdown with the list of the PLCs\n\t tagProvidersPLCs \u003d system.tag.browse(path \u003dselectedTagProvider , filter \u003d {})\n\t tagProviderPLCsList\u003d[]\n\t for tagProvidersPLC in tagProvidersPLCs.getResults():\n\t fullPath\u003dstr(tagProvidersPLC[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderPLCsList.append(entry)\n\t targetContainer.getChild(\"dropdownTargetPLC\").props.options \u003d tagProviderPLCsList\n\t selectedValue \u003d tagProviderPLCsList[0][\"label\"]\n\t targetContainer.getChild(\"dropdownTargetPLC\").props.value \u003d selectedValue\n\t #Filling up the dropdown with the list of the sources\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedValue , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownCommandTarget\").props.options \u003d tagProviderSourcesList\n\t targetContainer.getChild(\"dropdownEventsSource\").props.options \u003d tagProviderSourcesList\n\t\n\t\n\t targetContainer.getChild(\"tableAlarms\").props.data \u003d []\n\t targetContainer.getChild(\"textFieldCommandCode\").props.text \u003d \u0027\u0027\n\t targetContainer.getChild(\"textFieldCommandParameters\").props.text \u003d \u0027\u0027\n\t targetContainer.getChild(\"textFieldEventID\").props.text \u003d \u0027\u0027\n\t result+\u003d\"Init completed\"\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", "sessionScope": false, "viewScope": false }, { "messageType": "alarmsTab_changeSelectedPLC", "pageScope": true, "script": "\tresult\u003d\"\"\n\tresult\u003d\"Changing selected PLC for Alarms Page...\"\n\tself.sendConsoleMsg(result)\n\t\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_changeSelectedPLC", "pageScope": true, "script": "\tresult\u003d\"Changing selected PLC for Sequnce Page ...\"\n\tself.sendConsoleMsg(result)\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurment\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t result +\u003d str(tagProvidersSources)\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t", "sessionScope": false, "viewScope": false }, { "messageType": "utilsTab_changeSelectedPLC", "pageScope": true, "script": "\tresult\u003d\"\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownCommandTarget\").props.options \u003d tagProviderSourcesList\n\t targetContainer.getChild(\"dropdownEventsSource\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", "sessionScope": false, "viewScope": false }, { "messageType": "uploadBackup", "pageScope": true, "script": "\t# implement your handler here\n\tfileContent \u003d payload[\"fileContent\"]\n\tfileName\u003d payload[\"fileName\"]\n\tif \"Alarms\" in fileName:\n\t result\u003d\"Importing an Alarms backup file \"\n\t self.sendConsoleMsg(result)\n\t #Importing the alarms from a previously saved file\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t try:\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t for indexRow in range(1,len(rowsValues)):\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowFields[0]\n\t rowContent[\"ID\"]\u003drowFields[1]\n\t rowContent[\"Name\"]\u003drowFields[2]\n\t rowContent[\"Priority\"]\u003drowFields[3]\n\t rowContent[\"Type\"]\u003drowFields[4]\n\t rowContent[\"Tested_date_UTC\"]\u003drowFields[5]\n\t rowContent[\"Result\"]\u003drowFields[6]\n\t rowContent[\"Notes\"]\u003drowFields[7]\n\t tableContent.append(rowContent)\n\t\t self.session.custom.alarms \u003d tableContent\n\t except:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t return\n\telif \"Sources\" in fileName:\n\t #Importing the sources from a previously saved file\n\t result\u003d\"Importing an Sources backup file \"\n\t self.sendConsoleMsg(result)\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\t try:\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tagProviderSourcesList\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t system.perspective.print(str(indexRow))\n\t system.perspective.print(str(rowsValues[indexRow]))\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t system.perspective.print(str(rowFields))\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowFields[0]\n\t rowContent[\"ID\"]\u003drowFields[1]\n\t rowContent[\"Source\"]\u003drowFields[2]\n\t rowContent[\"Tested_date_UTC\"]\u003drowFields[3]\n\t rowContent[\"Result\"]\u003drowFields[4]\n\t rowContent[\"Notes\"]\u003drowFields[5]\n\t system.perspective.print(str(rowContent))\n\t tableContent.append(rowContent)\n\t \n\t \n\t system.perspective.print(\"Setting Table Sources DATA\")\n\t \t\t\t\t\n\t self.session.custom.sources \u003d tableContent\n\t except:\n\t \tsystem.perspective.print(\"Error\")\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\t\t\n\t return\n\telif \"Sequence\" in fileName:\n\t result\u003d\"Importing sequence from file is not yet supported\"\n\t self.sendConsoleMsg(result)\n\telse:\n\t result\u003d\"Invalid file name\"\n\t self.sendConsoleMsg(result)\n\t \n\tresult\u003d\"File :%s imported Succesfully \"%fileName\n\tself.sendConsoleMsg(result)", "sessionScope": false, "viewScope": false }, { "messageType": "measurementTab_setMode", "pageScope": true, "script": "\timport sys\n\tresult\u003d\"Setting Current Mode\"\n\tMODE_TYPE \u003d \"ModeChanged\"\n\ttargetState\u003dpayload[\"targetState\"]\n\t\n\tself.sendConsoleMsg(result)\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d targetContainer.getChild(\"tableSequence\").props.selection.data\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d MODE_TYPE :\n\t newElement[\"CurrentMode\"]\u003dtargetState\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d result", "sessionScope": false, "viewScope": false } ] }, "type": "ia.container.flex" } }