commit 081ce4239ca5662e3a3d516978f40c4449da88c7 Author: gigi.mamaladze Date: Wed Sep 10 17:48:30 2025 +0400 Created Project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..577fc29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.resources/ +checkout/ diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/page-config/config.json b/CDW5_SCADA/com.inductiveautomation.perspective/page-config/config.json new file mode 100644 index 0000000..5ee42db --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/page-config/config.json @@ -0,0 +1,228 @@ +{ + "pages": { + "/": { + "title": "", + "viewPath": "Main-Views/Home" + }, + "/Command": { + "title": "", + "viewPath": "Main-Views/CommandControl" + }, + "/Device-manager": { + "viewPath": "Main-Views/Device-Manager/DeviceManager" + }, + "/Help": { + "title": "Help", + "viewPath": "Main-Views/Help" + }, + "/MAP-Home": { + "title": "", + "viewPath": "Additional-Home-View/MAP-Home" + }, + "/Monitron": { + "viewPath": "Main-Views/Monitron" + }, + "/Oil": { + "viewPath": "Main-Views/OilMonitoring" + }, + "/Real-Time": { + "title": "", + "viewPath": "Alarm-Views/RealTime" + }, + "/Temperature": { + "title": "", + "viewPath": "Main-Views/TempMonitoring" + }, + "/Tools": { + "title": "Tools", + "viewPath": "Main-Views/ToolBox" + }, + "/Windows/Statistics": { + "title": "", + "viewPath": "" + }, + "/Windows/Status": { + "title": "", + "viewPath": "" + } + }, + "sharedDocks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "material/notifications_active", + "id": "Docked-South", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "Navigation-Views/Docked-South" + } + ], + "cornerPriority": "top-bottom", + "left": [ + { + "anchor": "fixed", + "autoBreakpoint": 805, + "content": "auto", + "handle": "autoHide", + "iconUrl": "", + "id": "Docked-West", + "modal": false, + "resizable": false, + "show": "auto", + "size": 70, + "viewParams": {}, + "viewPath": "Navigation-Views/Docked-West" + } + ], + "right": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-EPC", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-EPC" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-VFD", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-SNP", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-DS", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-MCM", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-Extendo", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-BTN", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Button" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-SS-BTN", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "auto", + "handle": "hide", + "iconUrl": "", + "id": "", + "modal": false, + "resizable": false, + "show": "visible", + "size": 50, + "viewParams": {}, + "viewPath": "Framework/Breakpoint" + } + ] + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/page-config/resource.json b/CDW5_SCADA/com.inductiveautomation.perspective/page-config/resource.json new file mode 100644 index 0000000..ef21970 --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/page-config/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "config.json" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:22:45Z" + }, + "lastModificationSignature": "7dba0ce5e71bf0a8d40b7d6c6ba4a7e3a87adda3df6f92ecf13fa0bb76a1df3c" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/session-props/props.json b/CDW5_SCADA/com.inductiveautomation.perspective/session-props/props.json new file mode 100644 index 0000000..1c299b2 --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/session-props/props.json @@ -0,0 +1,226 @@ +{ + "custom": { + "alarm_filter": { + "magnificaiton": "x2", + "orderby": false, + "show_buttons": true, + "show_camera_jams": true, + "show_diagnostic": true, + "show_fio": true, + "show_gateways": true, + "show_low_alarm": true, + "show_map": true, + "show_running": true, + "show_safety": true + }, + "alarms": [], + "aws": { + "prefix": "eu", + "region": "eu-west-1" + }, + "colours": { + "Fallback": "#00FF00", + "colour_impaired": false, + "state0": "#8C8C8C", + "state1": "#FF0000", + "state6": "#CCCCFF" + }, + "command_auth": { + "auth_time": { + "$": [ + "ts", + 192, + 1674052360661 + ], + "$ts": 1674052360661 + }, + "enabled": false, + "timeout_sp": 500 + }, + "covert": true, + "deviceSearchId": "", + "download_url": "https://scadacloud-storage-prod-downloadbucketdc1a1095-17r7vrw051y3t.s3.amazonaws.com/history/DNG2/58b56f26-c115-41b5-badb-a3394f312630-1672826106.csv?AWSAccessKeyId\u003dASIAVDEI3U6Y3J5KB2NA\u0026Signature\u003dzucRF2nCigK4y5M%2BNbjoI06UUng%3D\u0026x-amz-security-token\u003dIQoJb3JpZ2luX2VjEKL%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJIMEYCIQCy78peP6YRJ1gyf9RROmmcfk%2BRHyPhxv6ejHJgyEG0KQIhALXnJXYIyDiWzr9vxehoDIa2c7sx818gUyuiFXYY6rb2KsoDCOv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMMzUwMzI2ODU5Njk3IgzVrdKyNsVjl%2BNjqWQqngOJCTFOLVppHMmo1otgHZCXlVISlnBz6rz6ykr8SHgGQPc0EsaL9a1I0oQmS42i%2BlRHpEpQfMdjUbP3dr2OnVKXmopkkUJZ592SPzA3MZzS95SHXMvbbPDs0OAw5mKdS6LHQAQb90ZdQdeoEj%2FG1bPEIiifVT07PhHMA0JMS7ExgXmHzq1c6W%2Fjc%2BdfQOjl41qnWcE1GH5MaVfU%2FOKW5PffN6pLf%2BJ61YjjbXqPIpPHimJSGqMI5BmFzAfSlsYAtgFT8bMyJhbUDaPlDF7X42SSYLs1CeAbddPFMvrhDIUk%2BYTA3oV69SMjX91LrKBNqRhFS%2F0R4U8nbA4rSd%2BhMkdr5RSwa9Q22ZQpbzuqQU1H%2B4oQy6419lQg3lkBF5SBNGdvQajD6mav2ipHYe7OkX5GKq2pNzBLzJsqGGnsJvISB83ShA6SnuiZFx%2F2LXvDtEu3jTCS4yRjDegxiKRBs%2FiwH0dN2ztb8a3vnSJN0EqaoORf2eVb%2BozzAv1EBaqnUEZZAoOKb8iaxpbZtqLaUNOOd7VsHsUPoBQRkKqH2RAw95nVnQY6nQFAgIr2YAjgyrsuAfVgr2b41jc3Dj83zJ6I9LI%2BglDMgQFyfL0RNPmoxEu3DDfq5yLy8MtiPlYcs71J3J8Z%2B7xIkH%2BIPWKwmKLsvaEtN7Io1kOfvFgEcMhhIPRwwEj70AVokPncUQ8HtKQhXnq7l1YZ4yyAw2poT%2Ff%2FgJwv7suOu2dZeh%2BH%2B9OwE4M%2BRmVoFO7tTWIakPgODw2ZFzqs\u0026Expires\u003d1672829705", + "enable_activity_logging": false, + "fc": "CDW5", + "id_to_state": "{\"PLC01/0820_06_09\":1,\"PLC02/0820_91_16/B4510\":1,\"PLC03/0820_82_04/B312_3\":1,\"PLC09/0120_33_01/B425_0\":1,\"PLC09/1210_03_27\":3,\"PLC02/0820_07_39_BT1\":1,\"ARSAW1501/05_10/B12_6\":3,\"PLC09/0110_13_40\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0299\":2,\"PLC02/0820_05_31/B4000_2\":1,\"PLC09/1210_03_30\":3,\"PLC09/1210_03_36\":3,\"PLC1000/1000_43_01\":1,\"PLC09/0120_35_18/B505_2\":1,\"PLC02/0820_05_20/B3804_6\":1,\"PLC01/0820_06_05\":1,\"PLC01/0820_06_07\":1,\"PLC1000/1000_22_02/B501_3\":1,\"PLC01/0820_01_41/B6103_2\":1,\"PLC1000/1000_42_04/B517_7\":1,\"PLC09/2210_08_60/B911_1\":1,\"PLC02/0820_05_06/B3702_6\":1,\"PLC09/2210_08_60/B911_5\":1,\"PLC09/0110_23_40/B304_2\":1,\"PLC09/1210_02_01/B705_0\":1,\"PLC09/1210_03_25\":3,\"PLC01/0820_01_75/B6401_6\":1,\"PLC01/0820_64_03\":1,\"PLC02/0820_07_29_BT1/TN12A\":1,\"PLC02/0820_05_03/B3701_2\":1,\"PLC01/0820_06_14\":1,\"PLC09/2210_03_45/B1007_4\":1,\"PLC01/0820_06_17\":1,\"PLC01/0820_06_18\":1,\"FSC10/OFZ_0850_31/CH_0850_31_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_07\":2,\"FSC10/OFZ_0850_31/CH_0850_31_04\":2,\"FSC10/OFZ_0850_31/CH_0850_31_05\":2,\"FSC10/OFZ_0850_31/CH_0850_31_08\":2,\"FSC10/OFZ_0850_31/CH_0850_31_09\":2,\"PLC09/1210_03_06\":3,\"PLC09/1210_03_04\":3,\"PLC02/0820_05_41/B4100_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_02\":2,\"PLC02/0820_91_08/B4318\":1,\"FSC10/OFZ_0850_31/CH_0850_31_03\":2,\"FSC10/OFZ_0850_31/CH_0850_31_01\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0148\":3,\"PLC02/0820_01_07\":1,\"PLC09/1210_03_13\":3,\"PLC09/1210_03_12\":1,\"PLC26/0513_11_02/B118_1\":3,\"PLC09/0120_52_23/B528_6\":1,\"PLC09/0120_51_01/B510_0\":1,\"ARSAW1303\":3,\"PLC09/2210_02_01\":1,\"PLC09/1210_02_30\":3,\"PLC1000/1000_42_04\":1,\"PLC09/1210_03_02\":3,\"PLC1000/1000_43_01/B525_0\":1,\"PLC26/0513_31_30/M1\":3,\"PLC01/0820_02_02/B6500_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_28\":2,\"FSC10/OFZ_0850_31/CH_0850_31_29\":2,\"FSC10/OFZ_0850_31/CH_0850_31_26\":2,\"PLC09/0110_23_40\":1,\"PLC01/0820_01_47/B6200_6\":1,\"FSC10/OFZ_0850_52/CH_0850_52_01\":2,\"FSC10/OFZ_0850_31/CH_0850_31_27\":2,\"FSC10/OFZ_0850_31/CH_0850_31_20\":2,\"FSC10/OFZ_0850_31/CH_0850_31_21\":2,\"FSC10/OFZ_0850_31/CH_0850_31_24\":2,\"FSC10/OFZ_0850_31/CH_0850_31_25\":2,\"FSC10/OFZ_0850_31/CH_0850_31_22\":2,\"FSC10/OFZ_0850_31/CH_0850_31_23\":2,\"FSC10/IFZ_0850_68/PCO_0850_68_98\":2,\"PLC09/0120_33_10\":1,\"PLC09/2210_09_60\":1,\"PLC09/0110_01_20\":1,\"FSC10/OFZ_0850_31/CH_0850_31_17\":2,\"FSC10/OFZ_0850_31/CH_0850_31_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_15\":2,\"FSC10/OFZ_0850_31/CH_0850_31_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_19\":2,\"PLC09/0120_52_08/B526_7\":1,\"FSC10/OFZ_0850_31/CH_0850_31_10\":2,\"PLC02/0820_91_14/B4422\":1,\"FSC10/OFZ_0850_31/CH_0850_31_13\":2,\"FSC10/OFZ_0850_31/CH_0850_31_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_11\":2,\"FSC10/OFZ_0850_31/CH_0850_31_12\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0147\":3,\"PLC01/0820_06_05/B6902_2\":1,\"FSC10/OFZ_0850_51/CH_0850_51_50\":2,\"PLC09/0120_33_01\":1,\"PLC09/1210_03_60\":3,\"FSC10/OFZ_0850_31/CH_0850_31_48\":2,\"FSC10/OFZ_0850_31/CH_0850_31_49\":2,\"PLC01/0820_02_04/B6501_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_42\":2,\"PLC02/0820_07_09_BT1\":1,\"FSC10/OFZ_0850_51/CH_0850_51_43\":2,\"PLC01/0820_03_18/B6802_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_43\":2,\"PLC09/1210_03_48\":3,\"FSC10/OFZ_0850_31/CH_0850_31_40\":2,\"FSC10/OFZ_0850_51/CH_0850_51_41\":2,\"FSC10/OFZ_0850_31/CH_0850_31_41\":2,\"PLC02/0820_91_18/B4518\":1,\"FSC10/OFZ_0850_31/CH_0850_31_46\":2,\"FSC10/OFZ_0850_31/CH_0850_31_47\":2,\"FSC10/OFZ_0850_51/CH_0850_51_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_45\":2,\"PLC01/0820_55_03/B420_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_39\":2,\"FSC10/OFZ_0850_31/CH_0850_31_37\":2,\"FSC10/OFZ_0850_31/CH_0850_31_38\":2,\"PLC09/1210_03_39\":3,\"FSC10/OFZ_0850_31/CH_0850_31_31\":2,\"FSC10/OFZ_0850_31/CH_0850_31_32\":2,\"PLC09/0120_32_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_30\":2,\"PLC09/0120_35_10/B504_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_35\":2,\"PLC09/2210_02_01/B905_0\":1,\"PLC09/0110_23_40/B305_1\":1,\"ARSAW1501\":3,\"PLC09/0110_23_40/B305_0\":1,\"FSC10/OFZ_0850_31/CH_0850_31_36\":2,\"FSC10/OFZ_0850_31/CH_0850_31_33\":2,\"PLC09/0110_23_40/B305_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_34\":2,\"PLC09/1210_03_42\":3,\"PLC01/0820_06_07/B6903_2\":1,\"PLC26/0513_11_02\":3,\"PLC09/1210_03_45\":3,\"PLC09/0120_32_11\":1,\"ARSAW1303/05_22\":3,\"PLC09/0110_01_20/B102_3\":1,\"PLC09/0110_01_20/B102_2\":1,\"PLC09/2210_03_45\":1,\"PLC01/0820_01_73/B6400_6\":1,\"PLC02/0820_07_49_BT1\":1,\"PLC80/0632_05_40/B113_3\":1,\"PLC80/0632_05_40/B113_4\":1,\"PLC26/S01/A902\":4,\"PLC80/0632_05_40/B113_5\":1,\"PLC26/S01/A901\":4,\"PLC26/0513_31_23\":3,\"PLC09/0120_43_01\":1,\"PLC80/0632_05_40/B113_2\":1,\"PLC80/0632_01_07/B103_6\":1,\"PLC14/0580_01_01\":3,\"PLC09/0120_51_08/B510_7\":1,\"PLC09/0120_41_20/B521_3\":1,\"PLC26/0513_31_19\":3,\"PLC01/0820_02_05/B6502_2\":1,\"PLC02/0820_07_29_BT1\":1,\"PLC02/0820_91_12/B4414\":1,\"PLC82/0640_21_02/BT1\":1,\"PLC01/0820_02_01/B6500_2\":1,\"FSC10/OFZ_0850_53/CH_0850_53_02\":2,\"PLC81/0631_05_40/B113_5\":1,\"PLC02/0820_91_13/B4418\":1,\"PLC09/1210_02_30/M1\":3,\"PLC81/0631_05_40/B113_4\":1,\"PLC81/0631_05_40/B113_3\":1,\"FSC10/OFZ_0850_55/CH_0850_55_04\":2,\"PLC1000/1000_22_02\":1,\"PLC69/0330_07_20/B118_4\":1,\"FSC10/OFZ_0850_55/CH_0850_55_02\":2,\"FSC10/OFZ_0850_55/CH_0850_55_03\":2,\"PLC69/0330_07_20/B118_3\":1,\"PLC16/0580_21_01\":3,\"PLC01/0820_01_43/B6104_2\":1,\"PLC1000/1000_33_12\":1,\"PLC01/0820_55_03\":1,\"PLC27/0514_04_20/B106_5\":1,\"PLC09/2210_04_22\":1,\"PLC02/0820_05_14/B3801_6\":1,\"PLC26/0513_31_30\":3,\"PLC26/0513_32_01\":3,\"PLC09/1210_03_27/B805_2\":3,\"PLC02/0820_05_24/B3901_6\":1,\"PLC09/1210_03_04/B802_3\":3,\"PLC82/0640_21_03\":1,\"PLC82/0640_21_04\":1,\"PLC82/0640_21_01\":1,\"PLC26/0513_31_23/B320_6\":3,\"PLC82/0640_21_02\":1,\"FSC10/OFZ_0850_53/CH_0850_53_20\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_1180\":3,\"PLC02/0820_91_06/B4310\":1,\"PLC09/0110_21_20\":1,\"PLC1000/1000_33_01\":1,\"FSC10/OFZ_0850_53/CH_0850_53_29\":2,\"FSC10/OFZ_0850_53/CH_0850_53_26\":2,\"PLC01/0820_01_71/B6306_6\":1,\"PLC09/0120_35_26/B506_2\":1,\"PLC09/0120_51_01\":1,\"PLC09/0120_51_08\":1,\"PLC09/0120_41_14/B520_5\":1,\"PLC09/0120_41_20\":1,\"PLC09/0120_32_11/B423_2\":1,\"PLC82/0640_21_01/BT1\":1,\"PLC09/1210_09_60/M1\":3,\"PLC80/0632_05_40\":1,\"PLC09/0120_41_14\":1,\"FSC10\":4,\"PLC01/0820_57_03\":1,\"PLC02/0820_05_02/B3700_6\":1,\"PLC09/0120_51_15\":1,\"PLC02/0820_91_51/B5210\":1,\"PLC27/0514_04_20\":1,\"PLC09/1210_03_45/B807_4\":3,\"PLC09/1210_03_39/B806_6\":3,\"PLC01/0820_57_03/B421_1\":1,\"PLC09/0120_41_08\":1,\"PLC02/0820_91_52/B5214\":1,\"PLC09/0120_51_23\":1,\"PLC09/2210_03_12\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_1174\":3,\"PLC09/0120_52_15/B527_6\":1,\"PLC01/0820_01_77/B6402_6\":1,\"PLC01/0820_06_18/B7003_6\":1,\"PLC02/0820_91_02/B4214\":1,\"FSC10/OFZ_0850_33/CH_0850_33_21\":2,\"PLC26/0513_31_19/B320_2\":3,\"FSC10/OFZ_0850_33/CH_0850_33_25\":2,\"PLC09/0120_52_01\":1,\"PLC02/0820_91_53/B5218\":1,\"FSC10/OFZ_0850_75\":2,\"FSC10/OFZ_0850_73\":2,\"PLC09/0120_52_08\":1,\"PLC01/0820_02_03/B6501_2\":1,\"PLC09/2210_07_01\":1,\"FSC10/OFZ_0850_54/CH_0850_54_08\":2,\"PLC01/0820_06_14/B7001_6\":1,\"FSC10/OFZ_0850_54/CH_0850_54_06\":2,\"FSC10/OFZ_0850_54/CH_0850_54_03\":2,\"PLC82/0640_21_04/BT1\":1,\"FSC10/MAZ_0850_98/CCO_0850_98_98\":3,\"PLC09/0120_52_15\":1,\"PLC02/0820_07_19_BT1/TN8A\":1,\"FSC10/OFZ_0850_33/CH_0850_33_13\":2,\"PLC02/0820_04_28/B3601_6\":1,\"FSC10/OFZ_0850_33/CH_0850_33_14\":2,\"FSC10/OFZ_0850_33/CH_0850_33_12\":2,\"PLC01/0820_06_09/B6904_2\":1,\"PLC09/2210_06_29\":1,\"FSC10/OFZ_0850_33/CH_0850_33_15\":2,\"PLC09/2210_03_12/B1003_3\":1,\"PLC81/0631_05_40\":1,\"FSC10/OFZ_0850_33/CH_0850_33_19\":2,\"FSC10/OFZ_0850_54/CH_0850_54_19\":2,\"PLC02/0820_07_39_BT1/TN16A\":1,\"FSC10/OFZ_0850_54/CH_0850_54_17\":2,\"PLC69\":1,\"PLC09/2210_09_60/B912_5\":1,\"PLC09/0120_52_23\":1,\"PLC02/0820_05_41\":1,\"PLC01/0820_01_49/B6201_6\":1,\"FSC10/OFZ_0850_55\":2,\"PLC09/2210_07_27\":1,\"FSC10/OFZ_0850_54\":2,\"FSC10/OFZ_0850_33/CH_0850_33_05\":2,\"FSC10/OFZ_0850_53\":2,\"PLC01/0820_64_03/B425_5\":1,\"FSC10/OFZ_0850_52\":2,\"FSC10/OFZ_0850_51\":2,\"PLC02/0820_07_19_BT1\":1,\"FSC10/OFZ_0850_75/CH_0850_75_08\":2,\"FSC10/OFZ_0850_54/CH_0850_54_20\":2,\"PLC02/0820_91_07/B4314\":1,\"PLC69/0330_09_30\":1,\"PLC69/0330_09_30/B120_2\":1,\"PLC69/0330_09_30/B120_4\":1,\"PLC07/0320_31_20/B520_1\":1,\"PLC80\":1,\"PLC09/0120_51_15/B511_6\":1,\"FSC10/MAZ_0850_98\":3,\"PLC03\":1,\"PLC01/0820_02_04\":1,\"PLC01/0820_02_03\":1,\"PLC01/0820_02_13/B6600_2\":1,\"PLC09/2210_04_22/B1011_5\":1,\"PLC01\":1,\"PLC01/0820_02_02\":1,\"PLC01/0820_02_01\":1,\"PLC02\":1,\"PLC07\":1,\"PLC02/0820_05_20\":1,\"FSC10/OFZ_0850_33\":2,\"FSC10/OFZ_0850_32\":2,\"FSC10/OFZ_0850_31\":2,\"PLC02/0820_05_24\":1,\"PLC02/0820_05_27\":1,\"PLC82/0640_21_03/BT1\":1,\"PLC09\":3,\"PLC01/0820_02_05\":1,\"PLC14\":3,\"PLC01/0820_01_47\":1,\"PLC01/0820_01_46\":1,\"PLC01/0820_02_13\":1,\"ARSAW1501/05_10\":3,\"PLC01/0820_06_17/B7003_2\":1,\"PLC01/0820_01_43\":1,\"PLC02/0820_91_17/B4514\":1,\"PLC01/0820_71_03/B428_1\":1,\"PLC01/0820_01_41\":1,\"PLC16\":3,\"PLC02/0820_05_31\":1,\"PLC1000/1000_12_02/B308_7\":1,\"PLC01/0820_01_50/B6202_2\":1,\"PLC01/0820_59_03/B422_1\":1,\"PLC09/1210_03_60/M1\":3,\"PLC03/0820_82_04\":1,\"PLC01/0820_01_49\":1,\"PLC26\":4,\"PLC01/0820_02_20\":1,\"PLC27\":1,\"PLC01/0820_71_03\":1,\"PLC01/0820_01_50\":1,\"PLC02/0820_05_03\":1,\"PLC02/0820_05_02\":1,\"PLC02/0820_91_28/B4718\":1,\"PLC02/0820_91_33/B4818\":1,\"PLC02/0820_05_06\":1,\"PLC1000/1000_12_02\":1,\"PLC80/0632_03_01/B106_0\":1,\"PLC02/0820_91_15/B4430\":1,\"PLC01/0820_03_07\":1,\"PLC01/0820_03_08\":1,\"PLC01/0820_01_63\":1,\"PLC02/0820_05_14\":1,\"ARSAW1303/05_22/B11_4\":3,\"PLC02/0820_05_15\":1,\"PLC09/2210_06_02\":1,\"PLC01/0820_59_03\":1,\"PLC09/0120_51_23/B512_6\":1,\"PLC09/1210_03_12/B803_3\":1,\"PLC09/1210_03_06/B802_5\":3,\"PLC09/2210_07_01/B1025_0\":1,\"PLC01/0820_03_18\":1,\"PLC01/0820_03_07/B6703_2\":1,\"FSC10/OFZ_0850_32/CH_0850_32_03\":2,\"PLC01/0820_01_79\":1,\"PLC09/0120_41_08/B519_7\":1,\"PLC01/0820_01_77\":1,\"PLC02/0820_91_18\":1,\"PLC02/0820_91_17\":1,\"PLC01/0820_01_75\":1,\"PLC02/0820_91_16\":1,\"PLC01/0820_01_73\":1,\"PLC02/0820_91_15\":1,\"PLC02/0820_91_14\":1,\"FSC10/OFZ_0850_31/CH_0850_31_64\":2,\"PLC01/0820_01_71\":1,\"FSC10/OFZ_0850_31/CH_0850_31_65\":2,\"PLC02/0820_91_13\":1,\"PLC02/0820_91_12\":1,\"FSC10/OFZ_0850_31/CH_0850_31_62\":2,\"FSC10/OFZ_0850_31/CH_0850_31_63\":2,\"FSC10/OFZ_0850_32/CH_0850_32_09\":2,\"FSC10/OFZ_0850_32/CH_0850_32_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_68\":2,\"FSC10/OFZ_0850_31/CH_0850_31_69\":2,\"FSC10/OFZ_0850_31/CH_0850_31_66\":2,\"PLC26/S01\":4,\"FSC10/OFZ_0850_31/CH_0850_31_67\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0694\":3,\"FSC10/OFZ_0850_31/CH_0850_31_60\":2,\"FSC10/OFZ_0850_31/CH_0850_31_61\":2,\"PLC02/0820_07_49_BT1/TN20A\":1,\"PLC02/0820_91_36/B4910\":1,\"FSC10/OFZ_0850_32/CH_0850_32_13\":2,\"FSC10/OFZ_0850_32/CH_0850_32_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_59\":2,\"FSC10/OFZ_0850_32/CH_0850_32_12\":2,\"PLC02/0820_91_08\":1,\"PLC02/0820_91_07\":1,\"FSC10/OFZ_0850_73/CH_0850_73_13\":2,\"PLC02/0820_91_06\":1,\"FSC10/OFZ_0850_32/CH_0850_32_10\":2,\"PLC80/0632_03_06/B106_5\":1,\"FSC10/OFZ_0850_73/CH_0850_73_11\":2,\"PLC09/2210_07_27/B1028_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_53\":2,\"PLC02/0820_91_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_54\":2,\"FSC10/OFZ_0850_73/CH_0850_73_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_51\":2,\"FSC10/OFZ_0850_73/CH_0850_73_15\":2,\"PLC02/0820_05_27/B3903_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_52\":2,\"FSC10/OFZ_0850_32/CH_0850_32_17\":2,\"PLC02/0820_04_28\":1,\"FSC10/OFZ_0850_31/CH_0850_31_57\":2,\"FSC10/OFZ_0850_31/CH_0850_31_58\":2,\"FSC10/OFZ_0850_32/CH_0850_32_18\":2,\"FSC10/OFZ_0850_32/CH_0850_32_15\":2,\"FSC10/OFZ_0850_73/CH_0850_73_19\":2,\"FSC10/OFZ_0850_31/CH_0850_31_55\":2,\"FSC10/OFZ_0850_31/CH_0850_31_56\":2,\"PLC07/0320_31_20\":1,\"FSC10/OFZ_0850_32/CH_0850_32_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_50\":2,\"PLC26/0513_03_10/B104_7\":3,\"PLC02/0820_01_07/B3103_2\":1,\"PLC69/0330_07_20\":1,\"FSC10/OFZ_0850_73/CH_0850_73_02\":2,\"FSC10/OFZ_0850_73/CH_0850_73_03\":2,\"FSC10/OFZ_0850_73/CH_0850_73_01\":2,\"PLC02/0820_91_36\":1,\"FSC10/OFZ_0850_73/CH_0850_73_04\":2,\"PLC02/0820_91_33\":1,\"PLC09/0110_13_40/B204_2\":1,\"FSC10/IFZ_0850_68\":2,\"PLC26/0513_03_10\":3,\"FSC10/OFZ_0850_31/CH_0850_31_80\":2,\"PLC09/1210_03_48/B807_7\":3,\"PLC80/0632_03_06\":1,\"PLC02/0820_91_28\":1,\"PLC09/2210_08_60\":1,\"PLC80/0632_03_01\":1,\"FSC10/OFZ_0850_31/CH_0850_31_75\":2,\"FSC10/OFZ_0850_31/CH_0850_31_76\":2,\"FSC10/OFZ_0850_31/CH_0850_31_73\":2,\"FSC10/OFZ_0850_31/CH_0850_31_74\":2,\"FSC10/OFZ_0850_31/CH_0850_31_79\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0557\":3,\"PLC1000/1000_33_12/B419_3\":1,\"FSC10/OFZ_0850_32/CH_0850_32_37\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0556\":3,\"FSC10/OFZ_0850_31/CH_0850_31_77\":2,\"FSC10/OFZ_0850_31/CH_0850_31_78\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0565\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0564\":2,\"FSC10/OFZ_0850_31/CH_0850_31_71\":2,\"FSC10/OFZ_0850_31/CH_0850_31_72\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0680\":3,\"FSC10/OFZ_0850_31/CH_0850_31_70\":2,\"PLC02/0820_05_15/B3802_2\":1,\"PLC09/0120_33_10/B426_1\":1,\"PLC09/1210_09_60\":3,\"FSC10/OFZ_0850_32/CH_0850_32_47\":2,\"PLC09/0120_35_26\":1,\"PLC81\":1,\"PLC82\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0891\":4,\"PLC09/1210_03_30/B805_5\":3,\"PLC09/0110_13_40/B205_1\":1,\"PLC02/0820_91_53\":1,\"PLC09/0110_13_40/B205_0\":1,\"PLC02/0820_91_52\":1,\"PLC09/0110_13_40/B205_2\":1,\"PLC02/0820_91_51\":1,\"PLC09/2210_06_02/B1018_1\":1,\"FSC10/TRZ_0850_01\":4,\"PLC80/0632_01_07\":1,\"PLC09/0110_03_40\":1,\"PLC1000/1000_33_01/B418_0\":1,\"FSC10/OFZ_0850_32/CH_0850_32_54\":2,\"PLC09/0120_35_18\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0780\":2,\"PLC09/0110_03_40/B105_2\":1,\"PLC09/0110_03_40/B105_0\":1,\"PLC01/0820_01_79/B6403_6\":1,\"PLC09/0110_03_40/B105_1\":1,\"PLC26/0513_32_01/B405_4\":3,\"FSC10/TRZ_0850_01/CAS_0850_01_0300\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0779\":2,\"PLC09/1210_03_13/B803_4\":3,\"FSC10/OFZ_0850_33/CH_0850_33_43\":2,\"PLC01/0820_01_46/B6200_2\":1,\"PLC09/0110_21_20/B302_3\":1,\"PLC09/0110_21_20/B302_2\":1,\"PLC1000\":1,\"PLC09/0120_35_10\":1,\"PLC09/1210_03_36/B806_3\":3,\"PLC09/1210_02_01\":1,\"PLC09/1210_03_42/B807_1\":3,\"PLC09/2210_06_29/B1021_4\":1,\"PLC09/0120_32_02/B422_1\":1,\"PLC09/0110_03_40/B104_2\":1,\"PLC09/1210_03_25/B805_0\":3,\"PLC02/0820_07_09_BT1/TN4A\":1,\"PLC01/0820_01_63/B6302_6\":1,\"PLC01/0820_02_20/B6603_6\":1,\"PLC09/1210_03_02/B802_1\":3,\"PLC26/S01/A999\":4,\"PLC09/0120_52_01/B526_0\":1,\"PLC01/0820_03_08/B6703_6\":1}", + "page_id": "value", + "product_metrics": { + "enable": true + }, + "searchId": "PLC01", + "sources": [], + "view_in_focus": "/" + }, + "propConfig": { + "custom.alarmId": { + "persistent": false + }, + "custom.colours.state2": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#F00077\u0027,\u0027#FF8000\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state3": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#FF6000\u0027,\u0027#FFFF00\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state4": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#FCC400\u0027,\u0027#007EFC\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state5": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#007DFA\u0027,\u0027#00CC00\u0027)" + }, + "type": "expr" + } + }, + "custom.command_auth.auth_timeout": { + "binding": { + "config": { + "expression": "if({this.custom.command_auth.enabled},toInt(dateDiff({this.custom.command_auth.auth_time},now(),\u0027seconds\u0027)),0)" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif currentValue.value \u003e self.custom.command_auth.timeout_sp:\n\t\tself.custom.command_auth.enabled \u003d False" + } + }, + "custom.command_auth.enabled": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value:\n\t\tself.custom.command_auth.auth_time \u003d system.date.now()" + } + }, + "custom.covert": { + "access": "PRIVATE" + }, + "custom.deviceSearchId": { + "access": "PRIVATE" + }, + "custom.downloads": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{this.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/download" + }, + "transforms": [ + { + "code": "\tvalue_decoded \u003d system.util.jsonDecode(value)\n\tdownloads \u003d value_decoded.get(\"data\",[])\n\tfor i in downloads:\n\t\tsession_id \u003d i.get(\"session_id\")\n\t\turl \u003d i.get(\"url\")\n\t\tif session_id \u003d\u003d self.props.id:\n\t\t\tself.custom.download_url \u003d url\n\t\t\treturn True\n\t\telse:\n\t\t\treturn False", + "type": "script" + } + ], + "type": "tag" + } + }, + "custom.fc": { + "access": "PRIVATE" + }, + "custom.has_fc_role": { + "access": "PRIVATE", + "binding": { + "config": { + "expression": "{this.props.auth.user.roles}" + }, + "transforms": [ + { + "code": "\tuser_roles \u003d value\n\tfc_role \u003d self.custom.fc\n\trme_role \u003d fc_role.lower() + \"-rme-all\"\n\thas_role \u003d False\n\tfor roles in user_roles:\n\t\tif roles.lower() \u003d\u003d rme_role:\n\t\t\thas_role \u003d True\n\t\t\t\t\n\treturn has_role\n", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.id_to_state": { + "access": "PRIVATE", + "persistent": true + }, + "custom.show_south_dock": { + "access": "PRIVATE" + }, + "custom.state": { + "access": "PRIVATE" + }, + "custom.state_messages": { + "access": "PRIVATE" + }, + "custom.state_view": { + "access": "PRIVATE" + }, + "props.auth": { + "access": "PRIVATE", + "persistent": false + }, + "props.device.accelerometer": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.identifier": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.timezone": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.type": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.userAgent": { + "access": "SYSTEM", + "persistent": false + }, + "props.gateway": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.data": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.permissionGranted": { + "access": "SYSTEM", + "persistent": false + }, + "props.host": { + "access": "SYSTEM", + "persistent": false + }, + "props.id": { + "access": "SYSTEM", + "persistent": false + }, + "props.lastActivity": { + "access": "SYSTEM", + "persistent": false + } + }, + "props": { + "address": "[0:0:0:0:0:0:0:1]", + "appBar": { + "togglePosition": "hidden" + }, + "device": {}, + "geolocation": {}, + "locale": "en-US", + "timeZoneId": "Asia/Tbilisi" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/session-props/resource.json b/CDW5_SCADA/com.inductiveautomation.perspective/session-props/resource.json new file mode 100644 index 0000000..885aa60 --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/session-props/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "props.json" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:41:06Z" + }, + "lastModificationSignature": "d8b3cab87a7df385227f5ca13d71ab4013b7f8783ee08b9a344385a70c17d115" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/resource.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/resource.json new file mode 100644 index 0000000..e3fd54a --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:45:23Z" + }, + "lastModificationSignature": "c4dd6f280f6d0cadc7dd0e6f606412a81c58044531b328d631c6e7b3b6a8541c" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/thumbnail.png b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/thumbnail.png new file mode 100644 index 0000000..09e38c8 Binary files /dev/null and b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/thumbnail.png differ diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/view.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/view.json new file mode 100644 index 0000000..42175c3 --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/view.json @@ -0,0 +1,3471 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SVG" + }, + "position": { + "height": 1080, + "width": 1920 + }, + "props": { + "elements": [ + { + "id": "defs1", + "name": "defs1", + "type": "defs" + }, + { + "elements": [ + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-3-73-88", + "name": "rect6-3-73-88", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "82.921074" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32.505352", + "id": "rect6-8-3-0", + "name": "rect6-8-3-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "45.108559" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "103.44498", + "id": "rect2-5-6", + "name": "rect2-5-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "220.05446", + "y": "844.48077" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "80", + "id": "rect3-99-81", + "name": "rect3-99-81", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "287.73236", + "y": "872.26263" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "110", + "id": "rect4-8-9", + "name": "rect4-8-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "901.83569" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "60", + "id": "rect5-18-89", + "name": "rect5-18-89", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "836.5285" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-2-72", + "name": "rect6-2-72", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "783.91418" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-5-6-2", + "name": "rect6-5-6-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.933855", + "x": "391.86606", + "y": "810.22137" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-1-6-82", + "name": "rect6-1-6-82", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.867708", + "x": "391.86606", + "y": "757.60706" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-14-03-8", + "name": "rect6-14-03-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.099218", + "x": "391.86606", + "y": "731.29987" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2", + "name": "rect6-16-8-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.033073", + "x": "392.37875", + "y": "544.68555" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32", + "id": "rect7-0-4", + "name": "rect7-0-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "287.7558", + "y": "835.4599" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "155", + "id": "rect8-1-2", + "name": "rect8-1-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "570.99274" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "45", + "id": "rect9-25-5", + "name": "rect9-25-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "494.37839" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect10-0-8", + "name": "rect10-0-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "454.07123" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect11-9-62", + "name": "rect11-9-62", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "413.76407" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "62", + "id": "rect12-47-65", + "name": "rect12-47-65", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "346.45688" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "75", + "id": "rect13-8-39", + "name": "rect13-8-39", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "266.14972" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect14-3-2", + "name": "rect14-3-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "225.84256" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "85", + "id": "rect6-18-5-4", + "name": "rect6-18-5-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "135.5354" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-54-1-6", + "name": "rect6-54-1-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "391.86606", + "y": "109.22824" + }, + { + "d": "m 389.45594,53.399818 0.0533,46.770852 -38.0935,-38.729027 30.87082,-15.912035 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path14-2-1", + "name": "path14-2-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 251.2971,840.81638 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.86353,-11.90529 8.86353,-11.90529 l 22.45747,15.83459 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8", + "name": "path15-0-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 318.55862,830.65713 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.85514,-12.15416 8.85514,-12.15416 l 22.46586,16.08346 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-8", + "name": "path15-0-8-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 388.11198,595.74557 -0.121,46.0514 -1.66,2.66247 -23.0987,-15.11216 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path19-41-2", + "name": "path19-41-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 385.63578,725.9056 2.1895,-2.93839 v -43.619 l -25.2718,31.4534 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path21-0-11", + "name": "path21-0-11", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "cx": "249.62595", + "cy": "784.12286", + "fill": { + "paint": "#ffffff" + }, + "id": "path1-7", + "name": "path1-7", + "r": "0.0044052801", + "stroke": { + "dasharray": "none", + "paint": "#000000", + "width": "0.79375" + }, + "type": "circle" + }, + { + "d": "m 265.97293,765.51233 22.40494,16.03521 35.572,-49.57115 -22.42915,-16.02001 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2", + "name": "path2-9-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 237.07394,803.58081 22.45661,15.84193 26.80808,-35.46313 -22.40952,-16.0513 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-8", + "name": "path2-9-2-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1", + "name": "rect6-16-8-2-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "707.97766", + "y": "421.89841" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8", + "name": "rect6-16-8-2-1-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "708.30432", + "y": "447.1571" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2", + "name": "rect6-16-8-2-1-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "708.09961", + "y": "396.31888" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23", + "name": "rect6-16-8-2-1-23", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "708.24731", + "y": "370.72092" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-5", + "name": "rect6-16-8-2-1-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "661.60773", + "y": "356.16281" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-4", + "name": "rect6-16-8-2-1-8-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "661.62726", + "y": "382.35898" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-3", + "name": "rect6-16-8-2-1-2-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "661.61023", + "y": "330.09467" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-1", + "name": "rect6-16-8-2-1-23-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "661.48633", + "y": "304.11691" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-3-73-88-1", + "name": "rect6-3-73-88-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "83.106544" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32.505352", + "id": "rect6-8-3-0-1", + "name": "rect6-8-3-0-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "45.294014" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "103.44498", + "id": "rect2-5-6-3", + "name": "rect2-5-6-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "534.6712", + "y": "844.6662" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "80", + "id": "rect3-99-81-8", + "name": "rect3-99-81-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "602.34912", + "y": "872.44806" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "110", + "id": "rect4-8-9-7", + "name": "rect4-8-9-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "902.02118" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "60", + "id": "rect5-18-89-4", + "name": "rect5-18-89-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "836.71393" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-2-72-2", + "name": "rect6-2-72-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "784.09967" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-5-6-2-7", + "name": "rect6-5-6-2-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.933855", + "x": "706.48279", + "y": "810.4068" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-1-6-82-7", + "name": "rect6-1-6-82-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.867708", + "x": "706.48279", + "y": "757.79254" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-14-03-8-9", + "name": "rect6-14-03-8-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.099218", + "x": "706.48279", + "y": "731.48529" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-3", + "name": "rect6-16-8-2-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.033073", + "x": "706.99548", + "y": "544.87103" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32", + "id": "rect7-0-4-1", + "name": "rect7-0-4-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "602.37256", + "y": "835.64532" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "155", + "id": "rect8-1-2-9", + "name": "rect8-1-2-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "571.17822" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "45", + "id": "rect9-25-5-8", + "name": "rect9-25-5-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "494.56381" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect10-0-8-6", + "name": "rect10-0-8-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "454.25668" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect11-9-62-5", + "name": "rect11-9-62-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "413.94949" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "62", + "id": "rect12-47-65-0", + "name": "rect12-47-65-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "346.6423" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "75", + "id": "rect13-8-39-2", + "name": "rect13-8-39-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "266.33517" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect14-3-2-8", + "name": "rect14-3-2-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "226.028" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "85", + "id": "rect6-18-5-4-6", + "name": "rect6-18-5-4-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "135.72087" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-54-1-6-0", + "name": "rect6-54-1-6-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "706.48279", + "y": "109.41367" + }, + { + "d": "m 704.07272,53.585266 0.0533,46.770854 -38.0935,-38.729034 30.87082,-15.91203 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path14-2-1-2", + "name": "path14-2-1-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 565.91388,841.00181 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.86353,-11.9053 8.86353,-11.9053 l 22.45747,15.8346 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-4", + "name": "path15-0-8-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 633.1754,830.84261 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.85514,-12.1542 8.85514,-12.1542 l 22.46586,16.0835 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-8-8", + "name": "path15-0-8-8-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 702.72876,595.93101 -0.121,46.0514 -1.66,2.6625 -23.0987,-15.1122 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path19-41-2-6", + "name": "path19-41-2-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 700.25256,726.09101 2.1895,-2.9383 v -43.6191 l -25.2718,31.4535 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path21-0-11-5", + "name": "path21-0-11-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "cx": "564.24268", + "cy": "784.30829", + "fill": { + "paint": "#ffffff" + }, + "id": "path1-7-0", + "name": "path1-7-0", + "r": "0.0044052801", + "stroke": { + "dasharray": "none", + "paint": "#000000", + "width": "0.79375" + }, + "type": "circle" + }, + { + "d": "m 580.58971,765.69781 22.40494,16.0352 35.572,-49.5712 -22.42915,-16.02 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-9", + "name": "path2-9-2-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 551.69072,803.76631 22.45661,15.8419 26.80808,-35.4631 -22.40952,-16.0513 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-8-0", + "name": "path2-9-2-8-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-0", + "name": "rect6-16-8-2-1-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "963.99518", + "y": "239.03561" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-6", + "name": "rect6-16-8-2-1-8-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "964.32184", + "y": "264.29434" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-1", + "name": "rect6-16-8-2-1-2-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "964.11713", + "y": "213.45609" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-3", + "name": "rect6-16-8-2-1-23-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "964.26483", + "y": "187.85812" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-5-8", + "name": "rect6-16-8-2-1-5-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "917.62518", + "y": "173.30002" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-4-9", + "name": "rect6-16-8-2-1-8-4-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "917.64471", + "y": "199.49619" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-3-3", + "name": "rect6-16-8-2-1-2-3-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "917.62775", + "y": "147.2319" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-1-4", + "name": "rect6-16-8-2-1-23-1-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "917.50385", + "y": "121.25411" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-3-73-88-6", + "name": "rect6-3-73-88-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "82.502159" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32.505352", + "id": "rect6-8-3-0-18", + "name": "rect6-8-3-0-18", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "44.689644" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "103.44498", + "id": "rect2-5-6-4", + "name": "rect2-5-6-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "847.75891", + "y": "844.06183" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "80", + "id": "rect3-99-81-9", + "name": "rect3-99-81-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "915.43683", + "y": "871.84369" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "110", + "id": "rect4-8-9-6", + "name": "rect4-8-9-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "901.41675" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "60", + "id": "rect5-18-89-3", + "name": "rect5-18-89-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "836.10956" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-2-72-7", + "name": "rect6-2-72-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "783.49524" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-5-6-2-8", + "name": "rect6-5-6-2-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.933855", + "x": "1019.5705", + "y": "809.80243" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-1-6-82-8", + "name": "rect6-1-6-82-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.867708", + "x": "1019.5705", + "y": "757.18811" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-14-03-8-2", + "name": "rect6-14-03-8-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.099218", + "x": "1019.5705", + "y": "730.88092" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-9", + "name": "rect6-16-8-2-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.033073", + "x": "1020.0832", + "y": "544.2666" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32", + "id": "rect7-0-4-13", + "name": "rect7-0-4-13", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "915.46027", + "y": "835.04095" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "155", + "id": "rect8-1-2-5", + "name": "rect8-1-2-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "570.57379" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "45", + "id": "rect9-25-5-9", + "name": "rect9-25-5-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "493.95947" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect10-0-8-8", + "name": "rect10-0-8-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "453.65228" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect11-9-62-4", + "name": "rect11-9-62-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "413.34515" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "62", + "id": "rect12-47-65-07", + "name": "rect12-47-65-07", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "346.03796" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "75", + "id": "rect13-8-39-6", + "name": "rect13-8-39-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "265.7308" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect14-3-2-3", + "name": "rect14-3-2-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "225.42366" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "85", + "id": "rect6-18-5-4-61", + "name": "rect6-18-5-4-61", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "135.1165" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-54-1-6-5", + "name": "rect6-54-1-6-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1019.5705", + "y": "108.80933" + }, + { + "d": "m 1017.1605,52.980905 0.053,46.770846 -38.09354,-38.729026 30.87084,-15.91203 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path14-2-1-4", + "name": "path14-2-1-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 879.00162,840.39747 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.86353,-11.90529 8.86353,-11.90529 l 22.45747,15.83459 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-2", + "name": "path15-0-8-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 946.26314,830.23822 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.85514,-12.15416 8.85514,-12.15416 l 22.46586,16.08346 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-8-0", + "name": "path15-0-8-8-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1015.8165,595.32666 -0.121,46.0514 -1.66,2.66247 -23.0987,-15.11216 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path19-41-2-9", + "name": "path19-41-2-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1013.3403,725.48669 2.1895,-2.93839 v -43.619 l -25.2718,31.4534 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path21-0-11-7", + "name": "path21-0-11-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "cx": "877.33044", + "cy": "783.70392", + "fill": { + "paint": "#ffffff" + }, + "id": "path1-7-3", + "name": "path1-7-3", + "r": "0.0044052801", + "stroke": { + "dasharray": "none", + "paint": "#000000", + "width": "0.79375" + }, + "type": "circle" + }, + { + "d": "m 893.67745,765.09342 22.40494,16.03521 35.572,-49.57115 -22.42915,-16.02001 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-7", + "name": "path2-9-2-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 864.77846,803.1619 22.45661,15.84193 26.80808,-35.46313 -22.40952,-16.0513 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-8-2", + "name": "path2-9-2-8-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-6", + "name": "rect6-16-8-2-1-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1218.3096", + "y": "56.419853" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-0", + "name": "rect6-16-8-2-1-8-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1218.6362", + "y": "81.678551" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-16", + "name": "rect6-16-8-2-1-2-16", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1218.4315", + "y": "30.840324" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-5", + "name": "rect6-16-8-2-1-23-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1218.5792", + "y": "5.2423549" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-5-7", + "name": "rect6-16-8-2-1-5-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1171.9396", + "y": "-9.3157492" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-4-5", + "name": "rect6-16-8-2-1-8-4-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1171.9591", + "y": "16.880424" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-3-4", + "name": "rect6-16-8-2-1-2-3-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1171.9421", + "y": "-35.383896" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-1-1", + "name": "rect6-16-8-2-1-23-1-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1171.8182", + "y": "-61.361645" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-3-73-88-4", + "name": "rect6-3-73-88-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "82.943451" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32.505352", + "id": "rect6-8-3-0-6", + "name": "rect6-8-3-0-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "45.130932" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "103.44498", + "id": "rect2-5-6-0", + "name": "rect2-5-6-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1163.6064", + "y": "844.50311" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "80", + "id": "rect3-99-81-7", + "name": "rect3-99-81-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1231.2844", + "y": "872.28497" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "110", + "id": "rect4-8-9-1", + "name": "rect4-8-9-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "901.85803" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "60", + "id": "rect5-18-89-7", + "name": "rect5-18-89-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "836.55084" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-2-72-77", + "name": "rect6-2-72-77", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "783.93652" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-5-6-2-73", + "name": "rect6-5-6-2-73", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.933855", + "x": "1335.4181", + "y": "810.24371" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-1-6-82-3", + "name": "rect6-1-6-82-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.867708", + "x": "1335.4181", + "y": "757.62939" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-14-03-8-5", + "name": "rect6-14-03-8-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.099218", + "x": "1335.4181", + "y": "731.3222" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-99", + "name": "rect6-16-8-2-99", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.033073", + "x": "1335.9308", + "y": "544.70789" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32", + "id": "rect7-0-4-8", + "name": "rect7-0-4-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1231.3079", + "y": "835.48224" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "155", + "id": "rect8-1-2-1", + "name": "rect8-1-2-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "571.01508" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "45", + "id": "rect9-25-5-82", + "name": "rect9-25-5-82", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "494.40076" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect10-0-8-66", + "name": "rect10-0-8-66", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "454.0936" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect11-9-62-0", + "name": "rect11-9-62-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "413.78644" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "62", + "id": "rect12-47-65-3", + "name": "rect12-47-65-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "346.47925" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "75", + "id": "rect13-8-39-8", + "name": "rect13-8-39-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "266.17209" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect14-3-2-0", + "name": "rect14-3-2-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "225.86493" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "85", + "id": "rect6-18-5-4-1", + "name": "rect6-18-5-4-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "135.55777" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-54-1-6-2", + "name": "rect6-54-1-6-2", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1335.4181", + "y": "109.25062" + }, + { + "d": "m 1333.008,53.42219 0.053,46.77085 -38.0935,-38.729025 30.8709,-15.912035 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path14-2-1-5", + "name": "path14-2-1-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1194.8492,840.83875 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.8635,-11.90529 8.8635,-11.90529 l 22.4575,15.83459 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-0", + "name": "path15-0-8-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1262.1107,830.6795 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.8552,-12.15416 8.8552,-12.15416 l 22.4658,16.08346 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-8-9", + "name": "path15-0-8-8-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1331.6641,595.76794 -0.121,46.0514 -1.66,2.66247 -23.0987,-15.11216 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path19-41-2-4", + "name": "path19-41-2-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1329.1879,725.92797 2.1895,-2.93839 v -43.619 l -25.2718,31.4534 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path21-0-11-78", + "name": "path21-0-11-78", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "cx": "1193.178", + "cy": "784.1452", + "fill": { + "paint": "#ffffff" + }, + "id": "path1-7-35", + "name": "path1-7-35", + "r": "0.0044052801", + "stroke": { + "dasharray": "none", + "paint": "#000000", + "width": "0.79375" + }, + "type": "circle" + }, + { + "d": "m 1209.525,765.5347 22.405,16.03521 35.572,-49.57115 -22.4292,-16.02001 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-1", + "name": "path2-9-2-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1180.626,803.60318 22.4567,15.84193 26.808,-35.46313 -22.4095,-16.0513 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-8-20", + "name": "path2-9-2-8-20", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-1", + "name": "rect6-16-8-2-1-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1475.4769", + "y": "-126.95078" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-64", + "name": "rect6-16-8-2-1-8-64", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1475.8036", + "y": "-101.69209" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-0", + "name": "rect6-16-8-2-1-2-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1475.5989", + "y": "-152.53032" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-6", + "name": "rect6-16-8-2-1-23-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1475.7466", + "y": "-178.12828" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-5-1", + "name": "rect6-16-8-2-1-5-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1429.1071", + "y": "-192.68639" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-4-8", + "name": "rect6-16-8-2-1-8-4-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1429.1266", + "y": "-166.49022" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-3-9", + "name": "rect6-16-8-2-1-2-3-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1429.1095", + "y": "-218.75453" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-1-8", + "name": "rect6-16-8-2-1-23-1-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1428.9856", + "y": "-244.73228" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-3-73-88-9", + "name": "rect6-3-73-88-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "82.822174" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32.505352", + "id": "rect6-8-3-0-8", + "name": "rect6-8-3-0-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "45.009655" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "103.44498", + "id": "rect2-5-6-8", + "name": "rect2-5-6-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1479.337", + "y": "844.38184" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "80", + "id": "rect3-99-81-0", + "name": "rect3-99-81-0", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1547.0149", + "y": "872.1637" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "110", + "id": "rect4-8-9-8", + "name": "rect4-8-9-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "901.73676" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "60", + "id": "rect5-18-89-77", + "name": "rect5-18-89-77", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "836.42957" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-2-72-8", + "name": "rect6-2-72-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "783.81525" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-5-6-2-3", + "name": "rect6-5-6-2-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.933855", + "x": "1651.1487", + "y": "810.12244" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-1-6-82-83", + "name": "rect6-1-6-82-83", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "30.867708", + "x": "1651.1487", + "y": "757.50812" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-14-03-8-7", + "name": "rect6-14-03-8-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.099218", + "x": "1651.1487", + "y": "731.20093" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-10", + "name": "rect6-16-8-2-10", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31.033073", + "x": "1651.6614", + "y": "544.58667" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "32", + "id": "rect7-0-4-7", + "name": "rect7-0-4-7", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1547.0383", + "y": "835.36096" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "155", + "id": "rect8-1-2-3", + "name": "rect8-1-2-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "570.89386" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "45", + "id": "rect9-25-5-4", + "name": "rect9-25-5-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "494.27948" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect10-0-8-9", + "name": "rect10-0-8-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "453.97232" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect11-9-62-6", + "name": "rect11-9-62-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "413.66513" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "62", + "id": "rect12-47-65-5", + "name": "rect12-47-65-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "346.35794" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "75", + "id": "rect13-8-39-1", + "name": "rect13-8-39-1", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "266.05081" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "35", + "id": "rect14-3-2-09", + "name": "rect14-3-2-09", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "225.74365" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "85", + "id": "rect6-18-5-4-9", + "name": "rect6-18-5-4-9", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "135.43649" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-54-1-6-6", + "name": "rect6-54-1-6-6", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "rect", + "width": "31", + "x": "1651.1487", + "y": "109.12933" + }, + { + "d": "m 1648.7384,53.300912 0.053,46.770848 -38.0935,-38.729028 30.8709,-15.91203 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path14-2-1-8", + "name": "path14-2-1-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1510.5796,840.71747 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.8635,-11.90529 8.8635,-11.90529 l 22.4575,15.83459 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-3", + "name": "path15-0-8-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1577.8411,830.55822 -30.9231,-0.1653 c 0.3115,-9.6835 -0.6249,-13.8852 5.3247,-21.8612 1.6755,-2.2534 8.8552,-12.15416 8.8552,-12.15416 l 22.4658,16.08346 c -5.4352,4.5796 -5.2978,9.7373 -5.5572,14.5584 -0.1524,2.0031 -0.1654,3.5388 -0.1654,3.5388 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path15-0-8-8-4", + "name": "path15-0-8-8-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1647.3945,595.64666 -0.121,46.0514 -1.66,2.66247 -23.0987,-15.11216 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path19-41-2-8", + "name": "path19-41-2-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1644.9183,725.80669 2.1895,-2.93839 v -43.619 l -25.2718,31.4534 z", + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "id": "path21-0-11-4", + "name": "path21-0-11-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "cx": "1508.9086", + "cy": "784.02393", + "fill": { + "paint": "#ffffff" + }, + "id": "path1-7-9", + "name": "path1-7-9", + "r": "0.0044052801", + "stroke": { + "dasharray": "none", + "paint": "#000000", + "width": "0.79375" + }, + "type": "circle" + }, + { + "d": "m 1525.2554,765.41342 22.405,16.03521 35.572,-49.57115 -22.4292,-16.02001 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-92", + "name": "path2-9-2-92", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "d": "m 1496.3564,803.4819 22.4566,15.84193 26.8081,-35.46313 -22.4095,-16.0513 z", + "fill": { + "paint": "#ffffff" + }, + "id": "path2-9-2-8-5", + "name": "path2-9-2-8-5", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "type": "path" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-53", + "name": "rect6-16-8-2-1-53", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1732.2219", + "y": "-310.71088" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-3", + "name": "rect6-16-8-2-1-8-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1732.5486", + "y": "-285.45218" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-37", + "name": "rect6-16-8-2-1-2-37", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1732.3439", + "y": "-336.29044" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-4", + "name": "rect6-16-8-2-1-23-4", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1732.4916", + "y": "-361.8884" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-5-3", + "name": "rect6-16-8-2-1-5-3", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1685.8519", + "y": "-376.4465" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-8-4-80", + "name": "rect6-16-8-2-1-8-4-80", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1685.8715", + "y": "-350.25034" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-2-3-8", + "name": "rect6-16-8-2-1-2-3-8", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1685.8545", + "y": "-402.51462" + }, + { + "fill": { + "opacity": "1", + "paint": "#ffffff" + }, + "height": "21", + "id": "rect6-16-8-2-1-23-1-80", + "name": "rect6-16-8-2-1-23-1-80", + "stroke": { + "dasharray": "none", + "opacity": "1", + "paint": "#000000", + "width": "0.79375" + }, + "transform": "rotate(35.570435)", + "type": "rect", + "width": "27.548546", + "x": "1685.7306", + "y": "-428.4924" + } + ], + "id": "layer1", + "name": "layer1", + "type": "group" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 1920 1080" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json new file mode 100644 index 0000000..6b9198f --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:19:27Z" + }, + "lastModificationSignature": "72802284f227613576b899a197fdd4cdea303d1a66e05f9427cec0c19dbd81be" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png new file mode 100644 index 0000000..cad7855 Binary files /dev/null and b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png differ diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json new file mode 100644 index 0000000..67c6d2b --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json @@ -0,0 +1,59 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "custom": { + "s3URI": "amzl/CGN9/images/CGN9_V2.svg" + }, + "meta": { + "name": "Image" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "this.custom.s3URI" + }, + "transforms": [ + { + "code": "\treturn AWS.s3.getPresignedURL(self, value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "altText": "none", + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent", + "style": { + "backgroundColor": "#EEEEEE" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json new file mode 100644 index 0000000..05f5172 --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:19:04Z" + }, + "lastModificationSignature": "954dcb4f58df0d79a047f498c4618a42250bad9163e97295a17081652fb39ac9" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png new file mode 100644 index 0000000..9a384ad Binary files /dev/null and b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png differ diff --git a/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json new file mode 100644 index 0000000..05f423e --- /dev/null +++ b/CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json @@ -0,0 +1,87 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 182 + }, + "props": { + "style": { + "classes": "State-Styles/Background-Fill/State1" + }, + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 246 + }, + "props": { + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 328 + }, + "props": { + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tvalue \u003d 1\n\tsystem.tag.writeBlocking([\"PLC1000/Cmd/inReset\"],[value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 54, + "width": 174, + "x": 100, + "y": 516 + }, + "props": { + "text": "Reset" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/ignition/global-props/data.bin b/CDW5_SCADA/ignition/global-props/data.bin new file mode 100644 index 0000000..d681fae Binary files /dev/null and b/CDW5_SCADA/ignition/global-props/data.bin differ diff --git a/CDW5_SCADA/ignition/global-props/resource.json b/CDW5_SCADA/ignition/global-props/resource.json new file mode 100644 index 0000000..adcf7f0 --- /dev/null +++ b/CDW5_SCADA/ignition/global-props/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-09-10T13:18:30Z" + }, + "lastModificationSignature": "2ec17118719e6ac78a5b83c0622037206ef560128a9a6976f3b5a66486c2d29e" + } +} \ No newline at end of file diff --git a/CDW5_SCADA/project.json b/CDW5_SCADA/project.json new file mode 100644 index 0000000..875db6f --- /dev/null +++ b/CDW5_SCADA/project.json @@ -0,0 +1,7 @@ +{ + "title": "", + "description": "", + "parent": "SCADA_PERSPECTIVE_PARENT_PROJECT", + "enabled": true, + "inheritable": false +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py new file mode 100644 index 0000000..d311f3b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py @@ -0,0 +1,101 @@ +import datetime +import hashlib +import hmac + +import boto3 + +try: + from urllib.parse import quote_plus +except ImportError: + from urllib import quote_plus + + +def sign(key, msg): + return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() + + +def getSignatureKey(key, dateStamp, regionName, serviceName): + kDate = sign(("AWS4" + key).encode("utf-8"), dateStamp) + kRegion = sign(kDate, regionName) + kService = sign(kRegion, serviceName) + kSigning = sign(kService, "aws4_request") + return kSigning + + +def build_querystring(access_key, session_key, algorithm, amz_date, credential_scope): + query_strings = { + "X-Amz-Algorithm": algorithm, + "X-Amz-Credential": quote_plus(access_key + "/" + credential_scope), + "X-Amz-Date": amz_date, + #"X-Amz-Security-Token": quote_plus(session_key), + "X-Amz-SignedHeaders": "host", + } + keys = list(query_strings.keys()) + keys.sort() + query = [] + for key in keys: + query.append("{}={}".format(key, query_strings[key])) + + canonical_query_string = "&".join( + query + #["{}={}".format(key, value) for key, value in query_strings.items()] + ) + return canonical_query_string + + +def make_websocket_connection(api_id, region, stage, credentials): + method = "GET" + service = "execute-api" + host = "{}.{}.{}.amazonaws.com".format(api_id, service, region) + canonical_uri = "/{}".format(stage) + access_key = credentials["AccessKey"] + secret_key = credentials["SecretKey"] + session_key = credentials["SessionKey"] + now = datetime.datetime.utcnow() + + amz_date = now.strftime("%Y%m%dT%H%M%SZ") + datestamp = now.strftime("%Y%m%d") + canonical_headers = "host:" + host + "\n" + signed_headers = "host" + algorithm = "AWS4-HMAC-SHA256" + credential_scope = "/".join([datestamp, region, service, "aws4_request"]) + + canonical_querystring = build_querystring( + access_key, session_key, algorithm, amz_date, credential_scope + ) + payload_hash = hashlib.sha256(("").encode("utf-8")).hexdigest() + canonical_request = "\n".join( + [ + method, + canonical_uri, + "", + #canonical_querystring, + canonical_headers, + signed_headers, + payload_hash, + ] + ) + string_to_sign = "\n".join( + [ + algorithm, + amz_date, + credential_scope, + hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), + ] + ) + signing_key = getSignatureKey(secret_key, datestamp, region, service) + signature = hmac.new( + signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 + ).hexdigest() + canonical_querystring += "&X-Amz-Signature=" + signature + request_url = "wss://{}/{}".format(host, stage) + auth_header = algorithm + " Credential=" + access_key + "/" + credential_scope + ", SignedHeaders=" + signed_headers + ", Signature=" + signature + #print('-H "Authorization":"' + auth_header +'" -H "X-Amz-Date":"' + amz_date + '" -H "X-Amz-Security-Token":"' + session_key + '" ') + request_headers = { + "Authorization":auth_header, + "X-Amz-Date": amz_date, + "X-Amz-Security-Token": session_key + } + return request_url, request_headers + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json new file mode 100644 index 0000000..0cd5c77 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "852ad58d9980d76cd5a23297030ed74e6d02868fc81f4a95726be26a988ce3a0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py new file mode 100644 index 0000000..cbf08c4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py @@ -0,0 +1,43 @@ +import re, sys +import datetime +import base64 +import json +import com.amazonaws.services.s3.AmazonS3ClientBuilder as AmazonS3ClientBuilder +import com.amazonaws.auth.profile.ProfileCredentialsProvider as ProfileCredentialsProvider +import com.amazonaws.auth.AWSStaticCredentialsProvider as AWSStaticCredentialsProvider +import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder as AWSSecretsManagerClientBuilder +import com.amazonaws.services.secretsmanager.model.GetSecretValueRequest as GetSecretValueRequest +import com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException as AWSSecretsManagerException +import com.amazonaws.services.securitytoken.AWSSecurityTokenService as AWSSecurityTokenService ; +import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder as AWSSecurityTokenServiceClientBuilder; + + + + +# Constants + +class GetCredentials(): + ''' + Gets aws credentials for the provided path and region. + + ''' + + def __init__(self, path, profile, region): + self.path = path + self.profile = profile + self.region = region + self.credentials = self._get_credentials() +# self.client = self._get_s3_client() + + def _get_credentials(self): + '''Gets the credentials for the AWS account which the s3 bucket is in. + + Args: + + Returns: + credentials : The aws credentials for a given profile stored on the server. + ''' + credentials = ProfileCredentialsProvider(self.path, self.profile).getCredentials() + return credentials + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json new file mode 100644 index 0000000..aadadd4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "bf0a2b8d4ed52b865d211faf59778703bfbbe8ae22e48de1ea9a9b501bf19311" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py new file mode 100644 index 0000000..816e70e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py @@ -0,0 +1,19 @@ +import time + +def close_websckt(): + fc = system.tag.readBlocking(["Configuration/FC"]) + fc_value = fc[0].value + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc_value) + system.tag.writeBlocking([tag_provider + "System/close_socket"],[1]) + time.sleep(1) + system.tag.writeBlocking([tag_provider + "System/close_socket"],[0]) + logger = system.util.getLogger("%s-Project-Update" % (fc)) + logger.info("Web-Socket closed due to project update") + +def check_web_socket(): + request_to_close = system.tag.readBlocking(["System/close_socket"]) + request_to_close_val = request_to_close[0].value + if request_to_close_val: + return True + else: + return False diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json new file mode 100644 index 0000000..6a82227 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "dfe6b92955838658aa2893d8eb7a455312f13fdc1550f80914e79ead49392177" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py new file mode 100644 index 0000000..3f28796 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py @@ -0,0 +1,66 @@ +from java.net.http import HttpClient; +from java.net.http import WebSocket; +from java.net import URI +import json + + +class listener(WebSocket.Listener): + + def __init__(self,whid): + self.whid = whid + self.alarms = {} + self.tag_provider ="[%s_SCADA_TAG_PROVIDER]" % (self.whid) + self.logger = system.util.getLogger("%s-Web-Socket-Listener" % (whid)) + + def onOpen(self, websocket): + on_open_subscribe = json.dumps({"action":"subscribe", + "parameters":{"siteId":self.whid}} + ) + websocket.sendText(on_open_subscribe, True) + logger = system.util.getLogger("Web-Socket-OnOpen") + logger.info("message sent =" + str(on_open_subscribe)) + + + def onText(self, websocket, data, last): + # + alarm_message = None + + try: + json_data = json.loads(str(data)) + alarm_message = json_data.get("type") + + except ValueError as e: + self.logger.info("Unable to load Json object, malformed message") + + + if alarm_message == "alarm": + + + id = json_data.get("sourceId") + state = json_data.get("state") + + if state == 1: + removed_value = self.alarms.pop(id, "No key found") + + else: + self.alarms[id]= json_data + self.logger.info("this has been triggered") + self.logger.info("State is equal to " + str(state)) + system.tag.writeBlocking([self.tag_provider + "System/aws_data"], + [system.util.jsonEncode(self.alarms)] + ) + self.logger.info("Data written to tag : " + str(self.alarms)) + + self.logger.info("Response from server: " + str(data)) + websocket.request(1) +# return None + + def onClose(self, websocket, error): +# print("Socket is closed") +# logger = system.util.getLogger("OnClose-Web-Socket") + self.logger.info("Onclose method closed " + str(error)) + + def onError(self, websocket, error): +# logger = system.util.getLogger("OnError-Web-Socket") + self.logger.info("OnError method closed " + str(error)) + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json new file mode 100644 index 0000000..560daf1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2f1d4b2f4bb236b9cdaecaeff66f7d6f6c9867351fb4319210fa5f57b526d0ee" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py new file mode 100644 index 0000000..ea2f59a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py @@ -0,0 +1,21 @@ +import json + +class SendMessage(): + + def __init__(self, whid): + self.whid = whid + tag_path = "[%s_SCADA_TAG_PROVIDER]System/wbsckt_messages_send" % (whid) + tags_to_read = system.tag.readBlocking([tag_path]) + self.messages_to_send = system.util.jsonDecode(tags_to_read[0].value) + system.tag.writeBlocking([tag_path],[system.util.jsonEncode({})]) + self.message_list ={} + + def build_message_list(self): + if self.messages_to_send: + self.message_list = json.dumps(self.messages_to_send) + else: + self.message_list = None + + + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json new file mode 100644 index 0000000..88f7095 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8288b30358d563dbcffc68639718c4d69c4a04296427419bad71201dc1430f48" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json new file mode 100644 index 0000000..5ee42db --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json @@ -0,0 +1,228 @@ +{ + "pages": { + "/": { + "title": "", + "viewPath": "Main-Views/Home" + }, + "/Command": { + "title": "", + "viewPath": "Main-Views/CommandControl" + }, + "/Device-manager": { + "viewPath": "Main-Views/Device-Manager/DeviceManager" + }, + "/Help": { + "title": "Help", + "viewPath": "Main-Views/Help" + }, + "/MAP-Home": { + "title": "", + "viewPath": "Additional-Home-View/MAP-Home" + }, + "/Monitron": { + "viewPath": "Main-Views/Monitron" + }, + "/Oil": { + "viewPath": "Main-Views/OilMonitoring" + }, + "/Real-Time": { + "title": "", + "viewPath": "Alarm-Views/RealTime" + }, + "/Temperature": { + "title": "", + "viewPath": "Main-Views/TempMonitoring" + }, + "/Tools": { + "title": "Tools", + "viewPath": "Main-Views/ToolBox" + }, + "/Windows/Statistics": { + "title": "", + "viewPath": "" + }, + "/Windows/Status": { + "title": "", + "viewPath": "" + } + }, + "sharedDocks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "material/notifications_active", + "id": "Docked-South", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "Navigation-Views/Docked-South" + } + ], + "cornerPriority": "top-bottom", + "left": [ + { + "anchor": "fixed", + "autoBreakpoint": 805, + "content": "auto", + "handle": "autoHide", + "iconUrl": "", + "id": "Docked-West", + "modal": false, + "resizable": false, + "show": "auto", + "size": 70, + "viewParams": {}, + "viewPath": "Navigation-Views/Docked-West" + } + ], + "right": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-EPC", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-EPC" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-VFD", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-SNP", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-DS", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-MCM", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-Extendo", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-BTN", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Button" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-SS-BTN", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "auto", + "handle": "hide", + "iconUrl": "", + "id": "", + "modal": false, + "resizable": false, + "show": "visible", + "size": 50, + "viewParams": {}, + "viewPath": "Framework/Breakpoint" + } + ] + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/resource.json new file mode 100644 index 0000000..ba93fa7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "config.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "aa2a893d76dd70aea19c4e338e957db546e5da0f72342c0c64d88a46c25873b9" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/data.bin new file mode 100644 index 0000000..923c43f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/data.bin @@ -0,0 +1,9 @@ +{ + "type": "AllOf", + "securityLevels": [ + { + "name": "Authenticated", + "children": [] + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/resource.json new file mode 100644 index 0000000..6f31988 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6a0b94fd96dc2b6922bd18f70f13c7c93d467bc84813203e6ebfef3e053f0080" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/props.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/props.json new file mode 100644 index 0000000..96d2596 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/props.json @@ -0,0 +1,226 @@ +{ + "custom": { + "alarm_filter": { + "magnificaiton": "x2", + "orderby": false, + "show_buttons": true, + "show_camera_jams": true, + "show_diagnostic": true, + "show_fio": true, + "show_gateways": true, + "show_low_alarm": true, + "show_map": true, + "show_running": true, + "show_safety": true + }, + "alarms": [], + "aws": { + "prefix": "eu", + "region": "eu-west-1" + }, + "colours": { + "Fallback": "#00FF00", + "colour_impaired": false, + "state0": "#8C8C8C", + "state1": "#FF0000", + "state6": "#CCCCFF" + }, + "command_auth": { + "auth_time": { + "$": [ + "ts", + 192, + 1674052360661 + ], + "$ts": 1674052360661 + }, + "enabled": false, + "timeout_sp": 500 + }, + "covert": true, + "deviceSearchId": "", + "download_url": "https://scadacloud-storage-prod-downloadbucketdc1a1095-17r7vrw051y3t.s3.amazonaws.com/history/DNG2/58b56f26-c115-41b5-badb-a3394f312630-1672826106.csv?AWSAccessKeyId\u003dASIAVDEI3U6Y3J5KB2NA\u0026Signature\u003dzucRF2nCigK4y5M%2BNbjoI06UUng%3D\u0026x-amz-security-token\u003dIQoJb3JpZ2luX2VjEKL%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJIMEYCIQCy78peP6YRJ1gyf9RROmmcfk%2BRHyPhxv6ejHJgyEG0KQIhALXnJXYIyDiWzr9vxehoDIa2c7sx818gUyuiFXYY6rb2KsoDCOv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMMzUwMzI2ODU5Njk3IgzVrdKyNsVjl%2BNjqWQqngOJCTFOLVppHMmo1otgHZCXlVISlnBz6rz6ykr8SHgGQPc0EsaL9a1I0oQmS42i%2BlRHpEpQfMdjUbP3dr2OnVKXmopkkUJZ592SPzA3MZzS95SHXMvbbPDs0OAw5mKdS6LHQAQb90ZdQdeoEj%2FG1bPEIiifVT07PhHMA0JMS7ExgXmHzq1c6W%2Fjc%2BdfQOjl41qnWcE1GH5MaVfU%2FOKW5PffN6pLf%2BJ61YjjbXqPIpPHimJSGqMI5BmFzAfSlsYAtgFT8bMyJhbUDaPlDF7X42SSYLs1CeAbddPFMvrhDIUk%2BYTA3oV69SMjX91LrKBNqRhFS%2F0R4U8nbA4rSd%2BhMkdr5RSwa9Q22ZQpbzuqQU1H%2B4oQy6419lQg3lkBF5SBNGdvQajD6mav2ipHYe7OkX5GKq2pNzBLzJsqGGnsJvISB83ShA6SnuiZFx%2F2LXvDtEu3jTCS4yRjDegxiKRBs%2FiwH0dN2ztb8a3vnSJN0EqaoORf2eVb%2BozzAv1EBaqnUEZZAoOKb8iaxpbZtqLaUNOOd7VsHsUPoBQRkKqH2RAw95nVnQY6nQFAgIr2YAjgyrsuAfVgr2b41jc3Dj83zJ6I9LI%2BglDMgQFyfL0RNPmoxEu3DDfq5yLy8MtiPlYcs71J3J8Z%2B7xIkH%2BIPWKwmKLsvaEtN7Io1kOfvFgEcMhhIPRwwEj70AVokPncUQ8HtKQhXnq7l1YZ4yyAw2poT%2Ff%2FgJwv7suOu2dZeh%2BH%2B9OwE4M%2BRmVoFO7tTWIakPgODw2ZFzqs\u0026Expires\u003d1672829705", + "enable_activity_logging": false, + "fc": "SAT9", + "id_to_state": "{\"PLC01/0820_06_09\":1,\"PLC02/0820_91_16/B4510\":1,\"PLC03/0820_82_04/B312_3\":1,\"PLC09/0120_33_01/B425_0\":1,\"PLC09/1210_03_27\":3,\"PLC02/0820_07_39_BT1\":1,\"ARSAW1501/05_10/B12_6\":3,\"PLC09/0110_13_40\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0299\":2,\"PLC02/0820_05_31/B4000_2\":1,\"PLC09/1210_03_30\":3,\"PLC09/1210_03_36\":3,\"PLC1000/1000_43_01\":1,\"PLC09/0120_35_18/B505_2\":1,\"PLC02/0820_05_20/B3804_6\":1,\"PLC01/0820_06_05\":1,\"PLC01/0820_06_07\":1,\"PLC1000/1000_22_02/B501_3\":1,\"PLC01/0820_01_41/B6103_2\":1,\"PLC1000/1000_42_04/B517_7\":1,\"PLC09/2210_08_60/B911_1\":1,\"PLC02/0820_05_06/B3702_6\":1,\"PLC09/2210_08_60/B911_5\":1,\"PLC09/0110_23_40/B304_2\":1,\"PLC09/1210_02_01/B705_0\":1,\"PLC09/1210_03_25\":3,\"PLC01/0820_01_75/B6401_6\":1,\"PLC01/0820_64_03\":1,\"PLC02/0820_07_29_BT1/TN12A\":1,\"PLC02/0820_05_03/B3701_2\":1,\"PLC01/0820_06_14\":1,\"PLC09/2210_03_45/B1007_4\":1,\"PLC01/0820_06_17\":1,\"PLC01/0820_06_18\":1,\"FSC10/OFZ_0850_31/CH_0850_31_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_07\":2,\"FSC10/OFZ_0850_31/CH_0850_31_04\":2,\"FSC10/OFZ_0850_31/CH_0850_31_05\":2,\"FSC10/OFZ_0850_31/CH_0850_31_08\":2,\"FSC10/OFZ_0850_31/CH_0850_31_09\":2,\"PLC09/1210_03_06\":3,\"PLC09/1210_03_04\":3,\"PLC02/0820_05_41/B4100_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_02\":2,\"PLC02/0820_91_08/B4318\":1,\"FSC10/OFZ_0850_31/CH_0850_31_03\":2,\"FSC10/OFZ_0850_31/CH_0850_31_01\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0148\":3,\"PLC02/0820_01_07\":1,\"PLC09/1210_03_13\":3,\"PLC09/1210_03_12\":1,\"PLC26/0513_11_02/B118_1\":3,\"PLC09/0120_52_23/B528_6\":1,\"PLC09/0120_51_01/B510_0\":1,\"ARSAW1303\":3,\"PLC09/2210_02_01\":1,\"PLC09/1210_02_30\":3,\"PLC1000/1000_42_04\":1,\"PLC09/1210_03_02\":3,\"PLC1000/1000_43_01/B525_0\":1,\"PLC26/0513_31_30/M1\":3,\"PLC01/0820_02_02/B6500_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_28\":2,\"FSC10/OFZ_0850_31/CH_0850_31_29\":2,\"FSC10/OFZ_0850_31/CH_0850_31_26\":2,\"PLC09/0110_23_40\":1,\"PLC01/0820_01_47/B6200_6\":1,\"FSC10/OFZ_0850_52/CH_0850_52_01\":2,\"FSC10/OFZ_0850_31/CH_0850_31_27\":2,\"FSC10/OFZ_0850_31/CH_0850_31_20\":2,\"FSC10/OFZ_0850_31/CH_0850_31_21\":2,\"FSC10/OFZ_0850_31/CH_0850_31_24\":2,\"FSC10/OFZ_0850_31/CH_0850_31_25\":2,\"FSC10/OFZ_0850_31/CH_0850_31_22\":2,\"FSC10/OFZ_0850_31/CH_0850_31_23\":2,\"FSC10/IFZ_0850_68/PCO_0850_68_98\":2,\"PLC09/0120_33_10\":1,\"PLC09/2210_09_60\":1,\"PLC09/0110_01_20\":1,\"FSC10/OFZ_0850_31/CH_0850_31_17\":2,\"FSC10/OFZ_0850_31/CH_0850_31_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_15\":2,\"FSC10/OFZ_0850_31/CH_0850_31_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_19\":2,\"PLC09/0120_52_08/B526_7\":1,\"FSC10/OFZ_0850_31/CH_0850_31_10\":2,\"PLC02/0820_91_14/B4422\":1,\"FSC10/OFZ_0850_31/CH_0850_31_13\":2,\"FSC10/OFZ_0850_31/CH_0850_31_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_11\":2,\"FSC10/OFZ_0850_31/CH_0850_31_12\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0147\":3,\"PLC01/0820_06_05/B6902_2\":1,\"FSC10/OFZ_0850_51/CH_0850_51_50\":2,\"PLC09/0120_33_01\":1,\"PLC09/1210_03_60\":3,\"FSC10/OFZ_0850_31/CH_0850_31_48\":2,\"FSC10/OFZ_0850_31/CH_0850_31_49\":2,\"PLC01/0820_02_04/B6501_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_42\":2,\"PLC02/0820_07_09_BT1\":1,\"FSC10/OFZ_0850_51/CH_0850_51_43\":2,\"PLC01/0820_03_18/B6802_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_43\":2,\"PLC09/1210_03_48\":3,\"FSC10/OFZ_0850_31/CH_0850_31_40\":2,\"FSC10/OFZ_0850_51/CH_0850_51_41\":2,\"FSC10/OFZ_0850_31/CH_0850_31_41\":2,\"PLC02/0820_91_18/B4518\":1,\"FSC10/OFZ_0850_31/CH_0850_31_46\":2,\"FSC10/OFZ_0850_31/CH_0850_31_47\":2,\"FSC10/OFZ_0850_51/CH_0850_51_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_45\":2,\"PLC01/0820_55_03/B420_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_39\":2,\"FSC10/OFZ_0850_31/CH_0850_31_37\":2,\"FSC10/OFZ_0850_31/CH_0850_31_38\":2,\"PLC09/1210_03_39\":3,\"FSC10/OFZ_0850_31/CH_0850_31_31\":2,\"FSC10/OFZ_0850_31/CH_0850_31_32\":2,\"PLC09/0120_32_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_30\":2,\"PLC09/0120_35_10/B504_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_35\":2,\"PLC09/2210_02_01/B905_0\":1,\"PLC09/0110_23_40/B305_1\":1,\"ARSAW1501\":3,\"PLC09/0110_23_40/B305_0\":1,\"FSC10/OFZ_0850_31/CH_0850_31_36\":2,\"FSC10/OFZ_0850_31/CH_0850_31_33\":2,\"PLC09/0110_23_40/B305_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_34\":2,\"PLC09/1210_03_42\":3,\"PLC01/0820_06_07/B6903_2\":1,\"PLC26/0513_11_02\":3,\"PLC09/1210_03_45\":3,\"PLC09/0120_32_11\":1,\"ARSAW1303/05_22\":3,\"PLC09/0110_01_20/B102_3\":1,\"PLC09/0110_01_20/B102_2\":1,\"PLC09/2210_03_45\":1,\"PLC01/0820_01_73/B6400_6\":1,\"PLC02/0820_07_49_BT1\":1,\"PLC80/0632_05_40/B113_3\":1,\"PLC80/0632_05_40/B113_4\":1,\"PLC26/S01/A902\":4,\"PLC80/0632_05_40/B113_5\":1,\"PLC26/S01/A901\":4,\"PLC26/0513_31_23\":3,\"PLC09/0120_43_01\":1,\"PLC80/0632_05_40/B113_2\":1,\"PLC80/0632_01_07/B103_6\":1,\"PLC14/0580_01_01\":3,\"PLC09/0120_51_08/B510_7\":1,\"PLC09/0120_41_20/B521_3\":1,\"PLC26/0513_31_19\":3,\"PLC01/0820_02_05/B6502_2\":1,\"PLC02/0820_07_29_BT1\":1,\"PLC02/0820_91_12/B4414\":1,\"PLC82/0640_21_02/BT1\":1,\"PLC01/0820_02_01/B6500_2\":1,\"FSC10/OFZ_0850_53/CH_0850_53_02\":2,\"PLC81/0631_05_40/B113_5\":1,\"PLC02/0820_91_13/B4418\":1,\"PLC09/1210_02_30/M1\":3,\"PLC81/0631_05_40/B113_4\":1,\"PLC81/0631_05_40/B113_3\":1,\"FSC10/OFZ_0850_55/CH_0850_55_04\":2,\"PLC1000/1000_22_02\":1,\"PLC69/0330_07_20/B118_4\":1,\"FSC10/OFZ_0850_55/CH_0850_55_02\":2,\"FSC10/OFZ_0850_55/CH_0850_55_03\":2,\"PLC69/0330_07_20/B118_3\":1,\"PLC16/0580_21_01\":3,\"PLC01/0820_01_43/B6104_2\":1,\"PLC1000/1000_33_12\":1,\"PLC01/0820_55_03\":1,\"PLC27/0514_04_20/B106_5\":1,\"PLC09/2210_04_22\":1,\"PLC02/0820_05_14/B3801_6\":1,\"PLC26/0513_31_30\":3,\"PLC26/0513_32_01\":3,\"PLC09/1210_03_27/B805_2\":3,\"PLC02/0820_05_24/B3901_6\":1,\"PLC09/1210_03_04/B802_3\":3,\"PLC82/0640_21_03\":1,\"PLC82/0640_21_04\":1,\"PLC82/0640_21_01\":1,\"PLC26/0513_31_23/B320_6\":3,\"PLC82/0640_21_02\":1,\"FSC10/OFZ_0850_53/CH_0850_53_20\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_1180\":3,\"PLC02/0820_91_06/B4310\":1,\"PLC09/0110_21_20\":1,\"PLC1000/1000_33_01\":1,\"FSC10/OFZ_0850_53/CH_0850_53_29\":2,\"FSC10/OFZ_0850_53/CH_0850_53_26\":2,\"PLC01/0820_01_71/B6306_6\":1,\"PLC09/0120_35_26/B506_2\":1,\"PLC09/0120_51_01\":1,\"PLC09/0120_51_08\":1,\"PLC09/0120_41_14/B520_5\":1,\"PLC09/0120_41_20\":1,\"PLC09/0120_32_11/B423_2\":1,\"PLC82/0640_21_01/BT1\":1,\"PLC09/1210_09_60/M1\":3,\"PLC80/0632_05_40\":1,\"PLC09/0120_41_14\":1,\"FSC10\":4,\"PLC01/0820_57_03\":1,\"PLC02/0820_05_02/B3700_6\":1,\"PLC09/0120_51_15\":1,\"PLC02/0820_91_51/B5210\":1,\"PLC27/0514_04_20\":1,\"PLC09/1210_03_45/B807_4\":3,\"PLC09/1210_03_39/B806_6\":3,\"PLC01/0820_57_03/B421_1\":1,\"PLC09/0120_41_08\":1,\"PLC02/0820_91_52/B5214\":1,\"PLC09/0120_51_23\":1,\"PLC09/2210_03_12\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_1174\":3,\"PLC09/0120_52_15/B527_6\":1,\"PLC01/0820_01_77/B6402_6\":1,\"PLC01/0820_06_18/B7003_6\":1,\"PLC02/0820_91_02/B4214\":1,\"FSC10/OFZ_0850_33/CH_0850_33_21\":2,\"PLC26/0513_31_19/B320_2\":3,\"FSC10/OFZ_0850_33/CH_0850_33_25\":2,\"PLC09/0120_52_01\":1,\"PLC02/0820_91_53/B5218\":1,\"FSC10/OFZ_0850_75\":2,\"FSC10/OFZ_0850_73\":2,\"PLC09/0120_52_08\":1,\"PLC01/0820_02_03/B6501_2\":1,\"PLC09/2210_07_01\":1,\"FSC10/OFZ_0850_54/CH_0850_54_08\":2,\"PLC01/0820_06_14/B7001_6\":1,\"FSC10/OFZ_0850_54/CH_0850_54_06\":2,\"FSC10/OFZ_0850_54/CH_0850_54_03\":2,\"PLC82/0640_21_04/BT1\":1,\"FSC10/MAZ_0850_98/CCO_0850_98_98\":3,\"PLC09/0120_52_15\":1,\"PLC02/0820_07_19_BT1/TN8A\":1,\"FSC10/OFZ_0850_33/CH_0850_33_13\":2,\"PLC02/0820_04_28/B3601_6\":1,\"FSC10/OFZ_0850_33/CH_0850_33_14\":2,\"FSC10/OFZ_0850_33/CH_0850_33_12\":2,\"PLC01/0820_06_09/B6904_2\":1,\"PLC09/2210_06_29\":1,\"FSC10/OFZ_0850_33/CH_0850_33_15\":2,\"PLC09/2210_03_12/B1003_3\":1,\"PLC81/0631_05_40\":1,\"FSC10/OFZ_0850_33/CH_0850_33_19\":2,\"FSC10/OFZ_0850_54/CH_0850_54_19\":2,\"PLC02/0820_07_39_BT1/TN16A\":1,\"FSC10/OFZ_0850_54/CH_0850_54_17\":2,\"PLC69\":1,\"PLC09/2210_09_60/B912_5\":1,\"PLC09/0120_52_23\":1,\"PLC02/0820_05_41\":1,\"PLC01/0820_01_49/B6201_6\":1,\"FSC10/OFZ_0850_55\":2,\"PLC09/2210_07_27\":1,\"FSC10/OFZ_0850_54\":2,\"FSC10/OFZ_0850_33/CH_0850_33_05\":2,\"FSC10/OFZ_0850_53\":2,\"PLC01/0820_64_03/B425_5\":1,\"FSC10/OFZ_0850_52\":2,\"FSC10/OFZ_0850_51\":2,\"PLC02/0820_07_19_BT1\":1,\"FSC10/OFZ_0850_75/CH_0850_75_08\":2,\"FSC10/OFZ_0850_54/CH_0850_54_20\":2,\"PLC02/0820_91_07/B4314\":1,\"PLC69/0330_09_30\":1,\"PLC69/0330_09_30/B120_2\":1,\"PLC69/0330_09_30/B120_4\":1,\"PLC07/0320_31_20/B520_1\":1,\"PLC80\":1,\"PLC09/0120_51_15/B511_6\":1,\"FSC10/MAZ_0850_98\":3,\"PLC03\":1,\"PLC01/0820_02_04\":1,\"PLC01/0820_02_03\":1,\"PLC01/0820_02_13/B6600_2\":1,\"PLC09/2210_04_22/B1011_5\":1,\"PLC01\":1,\"PLC01/0820_02_02\":1,\"PLC01/0820_02_01\":1,\"PLC02\":1,\"PLC07\":1,\"PLC02/0820_05_20\":1,\"FSC10/OFZ_0850_33\":2,\"FSC10/OFZ_0850_32\":2,\"FSC10/OFZ_0850_31\":2,\"PLC02/0820_05_24\":1,\"PLC02/0820_05_27\":1,\"PLC82/0640_21_03/BT1\":1,\"PLC09\":3,\"PLC01/0820_02_05\":1,\"PLC14\":3,\"PLC01/0820_01_47\":1,\"PLC01/0820_01_46\":1,\"PLC01/0820_02_13\":1,\"ARSAW1501/05_10\":3,\"PLC01/0820_06_17/B7003_2\":1,\"PLC01/0820_01_43\":1,\"PLC02/0820_91_17/B4514\":1,\"PLC01/0820_71_03/B428_1\":1,\"PLC01/0820_01_41\":1,\"PLC16\":3,\"PLC02/0820_05_31\":1,\"PLC1000/1000_12_02/B308_7\":1,\"PLC01/0820_01_50/B6202_2\":1,\"PLC01/0820_59_03/B422_1\":1,\"PLC09/1210_03_60/M1\":3,\"PLC03/0820_82_04\":1,\"PLC01/0820_01_49\":1,\"PLC26\":4,\"PLC01/0820_02_20\":1,\"PLC27\":1,\"PLC01/0820_71_03\":1,\"PLC01/0820_01_50\":1,\"PLC02/0820_05_03\":1,\"PLC02/0820_05_02\":1,\"PLC02/0820_91_28/B4718\":1,\"PLC02/0820_91_33/B4818\":1,\"PLC02/0820_05_06\":1,\"PLC1000/1000_12_02\":1,\"PLC80/0632_03_01/B106_0\":1,\"PLC02/0820_91_15/B4430\":1,\"PLC01/0820_03_07\":1,\"PLC01/0820_03_08\":1,\"PLC01/0820_01_63\":1,\"PLC02/0820_05_14\":1,\"ARSAW1303/05_22/B11_4\":3,\"PLC02/0820_05_15\":1,\"PLC09/2210_06_02\":1,\"PLC01/0820_59_03\":1,\"PLC09/0120_51_23/B512_6\":1,\"PLC09/1210_03_12/B803_3\":1,\"PLC09/1210_03_06/B802_5\":3,\"PLC09/2210_07_01/B1025_0\":1,\"PLC01/0820_03_18\":1,\"PLC01/0820_03_07/B6703_2\":1,\"FSC10/OFZ_0850_32/CH_0850_32_03\":2,\"PLC01/0820_01_79\":1,\"PLC09/0120_41_08/B519_7\":1,\"PLC01/0820_01_77\":1,\"PLC02/0820_91_18\":1,\"PLC02/0820_91_17\":1,\"PLC01/0820_01_75\":1,\"PLC02/0820_91_16\":1,\"PLC01/0820_01_73\":1,\"PLC02/0820_91_15\":1,\"PLC02/0820_91_14\":1,\"FSC10/OFZ_0850_31/CH_0850_31_64\":2,\"PLC01/0820_01_71\":1,\"FSC10/OFZ_0850_31/CH_0850_31_65\":2,\"PLC02/0820_91_13\":1,\"PLC02/0820_91_12\":1,\"FSC10/OFZ_0850_31/CH_0850_31_62\":2,\"FSC10/OFZ_0850_31/CH_0850_31_63\":2,\"FSC10/OFZ_0850_32/CH_0850_32_09\":2,\"FSC10/OFZ_0850_32/CH_0850_32_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_68\":2,\"FSC10/OFZ_0850_31/CH_0850_31_69\":2,\"FSC10/OFZ_0850_31/CH_0850_31_66\":2,\"PLC26/S01\":4,\"FSC10/OFZ_0850_31/CH_0850_31_67\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0694\":3,\"FSC10/OFZ_0850_31/CH_0850_31_60\":2,\"FSC10/OFZ_0850_31/CH_0850_31_61\":2,\"PLC02/0820_07_49_BT1/TN20A\":1,\"PLC02/0820_91_36/B4910\":1,\"FSC10/OFZ_0850_32/CH_0850_32_13\":2,\"FSC10/OFZ_0850_32/CH_0850_32_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_59\":2,\"FSC10/OFZ_0850_32/CH_0850_32_12\":2,\"PLC02/0820_91_08\":1,\"PLC02/0820_91_07\":1,\"FSC10/OFZ_0850_73/CH_0850_73_13\":2,\"PLC02/0820_91_06\":1,\"FSC10/OFZ_0850_32/CH_0850_32_10\":2,\"PLC80/0632_03_06/B106_5\":1,\"FSC10/OFZ_0850_73/CH_0850_73_11\":2,\"PLC09/2210_07_27/B1028_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_53\":2,\"PLC02/0820_91_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_54\":2,\"FSC10/OFZ_0850_73/CH_0850_73_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_51\":2,\"FSC10/OFZ_0850_73/CH_0850_73_15\":2,\"PLC02/0820_05_27/B3903_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_52\":2,\"FSC10/OFZ_0850_32/CH_0850_32_17\":2,\"PLC02/0820_04_28\":1,\"FSC10/OFZ_0850_31/CH_0850_31_57\":2,\"FSC10/OFZ_0850_31/CH_0850_31_58\":2,\"FSC10/OFZ_0850_32/CH_0850_32_18\":2,\"FSC10/OFZ_0850_32/CH_0850_32_15\":2,\"FSC10/OFZ_0850_73/CH_0850_73_19\":2,\"FSC10/OFZ_0850_31/CH_0850_31_55\":2,\"FSC10/OFZ_0850_31/CH_0850_31_56\":2,\"PLC07/0320_31_20\":1,\"FSC10/OFZ_0850_32/CH_0850_32_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_50\":2,\"PLC26/0513_03_10/B104_7\":3,\"PLC02/0820_01_07/B3103_2\":1,\"PLC69/0330_07_20\":1,\"FSC10/OFZ_0850_73/CH_0850_73_02\":2,\"FSC10/OFZ_0850_73/CH_0850_73_03\":2,\"FSC10/OFZ_0850_73/CH_0850_73_01\":2,\"PLC02/0820_91_36\":1,\"FSC10/OFZ_0850_73/CH_0850_73_04\":2,\"PLC02/0820_91_33\":1,\"PLC09/0110_13_40/B204_2\":1,\"FSC10/IFZ_0850_68\":2,\"PLC26/0513_03_10\":3,\"FSC10/OFZ_0850_31/CH_0850_31_80\":2,\"PLC09/1210_03_48/B807_7\":3,\"PLC80/0632_03_06\":1,\"PLC02/0820_91_28\":1,\"PLC09/2210_08_60\":1,\"PLC80/0632_03_01\":1,\"FSC10/OFZ_0850_31/CH_0850_31_75\":2,\"FSC10/OFZ_0850_31/CH_0850_31_76\":2,\"FSC10/OFZ_0850_31/CH_0850_31_73\":2,\"FSC10/OFZ_0850_31/CH_0850_31_74\":2,\"FSC10/OFZ_0850_31/CH_0850_31_79\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0557\":3,\"PLC1000/1000_33_12/B419_3\":1,\"FSC10/OFZ_0850_32/CH_0850_32_37\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0556\":3,\"FSC10/OFZ_0850_31/CH_0850_31_77\":2,\"FSC10/OFZ_0850_31/CH_0850_31_78\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0565\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0564\":2,\"FSC10/OFZ_0850_31/CH_0850_31_71\":2,\"FSC10/OFZ_0850_31/CH_0850_31_72\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0680\":3,\"FSC10/OFZ_0850_31/CH_0850_31_70\":2,\"PLC02/0820_05_15/B3802_2\":1,\"PLC09/0120_33_10/B426_1\":1,\"PLC09/1210_09_60\":3,\"FSC10/OFZ_0850_32/CH_0850_32_47\":2,\"PLC09/0120_35_26\":1,\"PLC81\":1,\"PLC82\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0891\":4,\"PLC09/1210_03_30/B805_5\":3,\"PLC09/0110_13_40/B205_1\":1,\"PLC02/0820_91_53\":1,\"PLC09/0110_13_40/B205_0\":1,\"PLC02/0820_91_52\":1,\"PLC09/0110_13_40/B205_2\":1,\"PLC02/0820_91_51\":1,\"PLC09/2210_06_02/B1018_1\":1,\"FSC10/TRZ_0850_01\":4,\"PLC80/0632_01_07\":1,\"PLC09/0110_03_40\":1,\"PLC1000/1000_33_01/B418_0\":1,\"FSC10/OFZ_0850_32/CH_0850_32_54\":2,\"PLC09/0120_35_18\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0780\":2,\"PLC09/0110_03_40/B105_2\":1,\"PLC09/0110_03_40/B105_0\":1,\"PLC01/0820_01_79/B6403_6\":1,\"PLC09/0110_03_40/B105_1\":1,\"PLC26/0513_32_01/B405_4\":3,\"FSC10/TRZ_0850_01/CAS_0850_01_0300\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0779\":2,\"PLC09/1210_03_13/B803_4\":3,\"FSC10/OFZ_0850_33/CH_0850_33_43\":2,\"PLC01/0820_01_46/B6200_2\":1,\"PLC09/0110_21_20/B302_3\":1,\"PLC09/0110_21_20/B302_2\":1,\"PLC1000\":1,\"PLC09/0120_35_10\":1,\"PLC09/1210_03_36/B806_3\":3,\"PLC09/1210_02_01\":1,\"PLC09/1210_03_42/B807_1\":3,\"PLC09/2210_06_29/B1021_4\":1,\"PLC09/0120_32_02/B422_1\":1,\"PLC09/0110_03_40/B104_2\":1,\"PLC09/1210_03_25/B805_0\":3,\"PLC02/0820_07_09_BT1/TN4A\":1,\"PLC01/0820_01_63/B6302_6\":1,\"PLC01/0820_02_20/B6603_6\":1,\"PLC09/1210_03_02/B802_1\":3,\"PLC26/S01/A999\":4,\"PLC09/0120_52_01/B526_0\":1,\"PLC01/0820_03_08/B6703_6\":1}", + "page_id": "value", + "product_metrics": { + "enable": true + }, + "searchId": "PLC01", + "sources": [], + "view_in_focus": "/" + }, + "propConfig": { + "custom.alarmId": { + "persistent": false + }, + "custom.colours.state2": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#F00077\u0027,\u0027#FF8000\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state3": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#FF6000\u0027,\u0027#FFFF00\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state4": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#FCC400\u0027,\u0027#007EFC\u0027)" + }, + "type": "expr" + } + }, + "custom.colours.state5": { + "binding": { + "config": { + "expression": "if({this.custom.colours.colour_impaired},\u0027#007DFA\u0027,\u0027#00CC00\u0027)" + }, + "type": "expr" + } + }, + "custom.command_auth.auth_timeout": { + "binding": { + "config": { + "expression": "if({this.custom.command_auth.enabled},toInt(dateDiff({this.custom.command_auth.auth_time},now(),\u0027seconds\u0027)),0)" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif currentValue.value \u003e self.custom.command_auth.timeout_sp:\n\t\tself.custom.command_auth.enabled \u003d False" + } + }, + "custom.command_auth.enabled": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value:\n\t\tself.custom.command_auth.auth_time \u003d system.date.now()" + } + }, + "custom.covert": { + "access": "PRIVATE" + }, + "custom.deviceSearchId": { + "access": "PRIVATE" + }, + "custom.downloads": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{this.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/download" + }, + "transforms": [ + { + "code": "\tvalue_decoded \u003d system.util.jsonDecode(value)\n\tdownloads \u003d value_decoded.get(\"data\",[])\n\tfor i in downloads:\n\t\tsession_id \u003d i.get(\"session_id\")\n\t\turl \u003d i.get(\"url\")\n\t\tif session_id \u003d\u003d self.props.id:\n\t\t\tself.custom.download_url \u003d url\n\t\t\treturn True\n\t\telse:\n\t\t\treturn False", + "type": "script" + } + ], + "type": "tag" + } + }, + "custom.fc": { + "access": "PRIVATE" + }, + "custom.has_fc_role": { + "access": "PRIVATE", + "binding": { + "config": { + "expression": "{this.props.auth.user.roles}" + }, + "transforms": [ + { + "code": "\tuser_roles \u003d value\n\tfc_role \u003d self.custom.fc\n\trme_role \u003d fc_role.lower() + \"-rme-all\"\n\thas_role \u003d False\n\tfor roles in user_roles:\n\t\tif roles.lower() \u003d\u003d rme_role:\n\t\t\thas_role \u003d True\n\t\t\t\t\n\treturn has_role\n", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.id_to_state": { + "access": "PRIVATE", + "persistent": true + }, + "custom.show_south_dock": { + "access": "PRIVATE" + }, + "custom.state": { + "access": "PRIVATE" + }, + "custom.state_messages": { + "access": "PRIVATE" + }, + "custom.state_view": { + "access": "PRIVATE" + }, + "props.auth": { + "access": "PRIVATE", + "persistent": false + }, + "props.device.accelerometer": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.identifier": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.timezone": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.type": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.userAgent": { + "access": "SYSTEM", + "persistent": false + }, + "props.gateway": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.data": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.permissionGranted": { + "access": "SYSTEM", + "persistent": false + }, + "props.host": { + "access": "SYSTEM", + "persistent": false + }, + "props.id": { + "access": "SYSTEM", + "persistent": false + }, + "props.lastActivity": { + "access": "SYSTEM", + "persistent": false + } + }, + "props": { + "address": "127.0.0.1", + "appBar": { + "togglePosition": "hidden" + }, + "device": {}, + "geolocation": {}, + "locale": "en-US", + "timeZoneId": "Asia/Tbilisi" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/resource.json new file mode 100644 index 0000000..91b87d5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "props.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "2d53edbfaf72757cf3af4388b12ee67c90d3a4e54c4c44311683b0aefb9880ba" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/data.bin new file mode 100644 index 0000000..1d0b230 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/data.bin @@ -0,0 +1 @@ +{"onStartup":"\ttags_to_read = system.tag.readBlocking([\"Configuration/FC\", \"Configuration/aws\"])\n\tsession.custom.fc = tags_to_read[0].value\n\taws = system.util.jsonDecode( tags_to_read[1].value)\n\tprefix = aws.get(\"prefix\")\n\tregion = aws.get(\"region\")\n\tsession.custom.aws.prefix = prefix\n\tsession.custom.aws.region = region\n\tsession.custom.covert = False\n\tsession.custom.download_url = None\n\tsession.custom.alarm_filter.show_map = False\n\tsession.custom.alarm_filter.magnificaiton = \"x2\"","onShutdown":"#\tsystem.perspective.logout()","onBarcodeDataReceived":"\t","onBluetoothReceived":"\t","onAccelerometerDataReceived":"\t","onNdefDataReceived":"\t"} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/resource.json new file mode 100644 index 0000000..e9dd780 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2023-06-19T08:26:13Z" + }, + "lastModificationSignature": "1cd2c178f5d2b73e5040401d437510e4eceb09cc96845b9a96a625c04089b832" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/resource.json new file mode 100644 index 0000000..2a1c1b7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "eab9cbe16c832dbbb54701584553038a50a435c3f2c40cd6428d9a21f78c3448" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/style.json new file mode 100644 index 0000000..3a92ad8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "backgroundColor": "#B42222B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "lineHeight": "20px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/resource.json new file mode 100644 index 0000000..aebe462 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "83f26c834dbe18ee5c03f3bbd7bc20ccb9c021b1f449c3dfd48c3cd9457b5ce9" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/style.json new file mode 100644 index 0000000..e913ad7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "lineHeight": "20px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/resource.json new file mode 100644 index 0000000..8986688 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1f308e3f17e806bb9d0c18b91b29105fd86a041c1d303d964da6560d3e0926c3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/style.json new file mode 100644 index 0000000..3f8698b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/resource.json new file mode 100644 index 0000000..27a5d21 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "aff4f9e2df4969a2bf6328959e815eef8bec24ec2208b40fd6c30c75ea88c694" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/style.json new file mode 100644 index 0000000..1b67501 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/resource.json new file mode 100644 index 0000000..25e248a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6719beac1e2961b52f8ee92e1707f887e6c5d88e612ea10dfbe9ef4ac7fb3668" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/style.json new file mode 100644 index 0000000..21a76c6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/resource.json new file mode 100644 index 0000000..2a1c1b7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "eab9cbe16c832dbbb54701584553038a50a435c3f2c40cd6428d9a21f78c3448" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/style.json new file mode 100644 index 0000000..3a92ad8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "backgroundColor": "#B42222B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "lineHeight": "20px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/resource.json new file mode 100644 index 0000000..aa31fda --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "086b93b137d55e4bf5562c66f42a42a355926001ca906053c41999c38f266a98" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/style.json new file mode 100644 index 0000000..33d9994 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "backgroundColor": "#007EFCB3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "lineHeight": "20px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/resource.json new file mode 100644 index 0000000..8986688 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1f308e3f17e806bb9d0c18b91b29105fd86a041c1d303d964da6560d3e0926c3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/style.json new file mode 100644 index 0000000..3f8698b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/resource.json new file mode 100644 index 0000000..9243b1b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "953f0bf6ec39b84459904d06ce9954c8b637c7c3f7c14232f1137d8608e6a16e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/style.json new file mode 100644 index 0000000..cb775a7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/resource.json new file mode 100644 index 0000000..7cddb84 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f546ae2ff07b6385055219675d5379b9a96c1cc45fc12137579dfcb0b159c54b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/style.json new file mode 100644 index 0000000..45b722d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF8000B3", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/resource.json new file mode 100644 index 0000000..ae0738b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4dbef54ec8fc29c5025eb79114830bf23500b5ccdd0264d192edf283a996b131" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/style.json new file mode 100644 index 0000000..3c420c6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#2B2B2B", + "borderColor": "#909090", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/resource.json new file mode 100644 index 0000000..c7ee0d8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "68c9774b39182e44396cebbd943ff69614073cdc1c614192d618173479d1d3e1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/style.json new file mode 100644 index 0000000..fcc4a21 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/style.json @@ -0,0 +1,15 @@ +{ + "base": { + "style": { + "backgroundColor": "#008000", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/resource.json new file mode 100644 index 0000000..3b431dd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "597b1d7abfabae5933ee5155c11a3109bd31c583764fae05237bf397831f3389" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/style.json new file mode 100644 index 0000000..e703988 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFFFF", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "0.5px", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "lineHeight": "20px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/resource.json new file mode 100644 index 0000000..76f0d6b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b3a828f40c06ba4f3b2ea7852db6dbba98c7c63f3af6395a43ae3f7b1966d27b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/style.json new file mode 100644 index 0000000..d99fee3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/style.json @@ -0,0 +1,38 @@ +{ + "base": { + "style": { + "backgroundColor": "#3779AE", + "boxShadow": "none", + "color": "#FAFAFA", + "margin": "5px" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": { + "backgroundColor": "var(--info)", + "boxShadow": "none" + }, + "100%": { + "backgroundColor": "#448BB7", + "boxShadow": "none" + } + } + } + }, + { + "pseudo": "active", + "style": { + "backgroundColor": "var(--info)", + "boxShadow": "none" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/resource.json new file mode 100644 index 0000000..5763413 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1742fd6626c704c8171aa2650f1449e9495f4841c05b5b237763d5236c9dac6e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/style.json new file mode 100644 index 0000000..440fe39 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/style.json @@ -0,0 +1,30 @@ +{ + "base": { + "style": { + "backgroundColor": "#FAFAFA", + "borderColor": "var(--neutral-100)", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#323232", + "fontWeight": "normal", + "margin": "5px" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": {}, + "100%": { + "borderWidth": "2px" + } + } + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/resource.json new file mode 100644 index 0000000..5661c4d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "89fa94ef1bdf1f8e05e2cb494eaa6789fff639673a89e806e3a4376b2368ba6d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/style.json new file mode 100644 index 0000000..54e8b9e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/style.json @@ -0,0 +1,16 @@ +{ + "base": { + "style": { + "cursor": "pointer", + "fill": "var(--callToAction)" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "fill": "var(--callToAction--hover)" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/resource.json new file mode 100644 index 0000000..f12ca81 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "48f3c9eafcdffcdab435b1b72d828f3634bcc9f5fbb95c39fce8148845ff3419" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/style.json new file mode 100644 index 0000000..86eb8e9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "color": "#FAFAFA", + "fontSize": "14px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/resource.json new file mode 100644 index 0000000..72da465 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "72bffb3daae503d7558cd29f56888838347b66f08e1a289f991d26c2e539c6a7" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/style.json new file mode 100644 index 0000000..70f1467 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "lineHeight": "32px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/resource.json new file mode 100644 index 0000000..7918997 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "d6a6cd7b51db473de34046cd6c57189b9504919bbbc28f406dabc8f7eaae98ce" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/style.json new file mode 100644 index 0000000..6c614de --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "backgroundColor": "#555555", + "borderTopColor": "#FF8000", + "borderTopStyle": "solid", + "borderTopWidth": "4px", + "boxShadow": "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/resource.json new file mode 100644 index 0000000..937ca9f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "dfeda8574e0f90ad5ae4b44c0455b4029293b14b9d84949513af9c000459b0e8" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/style.json new file mode 100644 index 0000000..89f4d02 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/style.json @@ -0,0 +1,25 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--error)", + "borderStyle": "none", + "boxShadow": "none", + "margin": "5px", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "var(--error)" + } + }, + { + "pseudo": "active", + "style": { + "color": "var(--neutral-30)" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/resource.json new file mode 100644 index 0000000..f3b00fb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3a433791edd2d47f0a73b4a78f627a835c93cef6933c3f8e37c525fa28640fcf" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/style.json new file mode 100644 index 0000000..63047d1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/style.json @@ -0,0 +1,33 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-10)", + "borderColor": "var(--error)", + "borderStyle": "solid", + "borderWidth": "1px", + "boxShadow": "none", + "color": "var(--error)", + "fontWeight": "normal", + "margin": "5px", + "textTransform": "uppercase", + "fill": "var(--error)" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": {}, + "100%": { + "backgroundColor": "var(--neutral-20)" + } + } + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/resource.json new file mode 100644 index 0000000..e726dc1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "abc31ca6aa3179f3224fbd126e8f5c07c62b1b0a83f5f0e65301fbf507f65d23" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/style.json new file mode 100644 index 0000000..060cd4f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "backgroundColor": "#555555", + "borderTopColor": "#007EFC", + "borderTopStyle": "solid", + "borderTopWidth": "4px", + "boxShadow": "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/resource.json new file mode 100644 index 0000000..34cd15c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b440f4e40ef48d5a77d621ce3101094c3e499bc9676c67fc4df9faf814fbae35" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/style.json new file mode 100644 index 0000000..22852ee --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/style.json @@ -0,0 +1,25 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--info)", + "borderStyle": "none", + "boxShadow": "none", + "margin": "5px", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "var(--info)" + } + }, + { + "pseudo": "active", + "style": { + "color": "var(--neutral-30)" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/resource.json new file mode 100644 index 0000000..7ed0eeb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "af159327f2d3303d712fe1d9e045451acc349d0f49c53288c14aee18c098e7ab" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/style.json new file mode 100644 index 0000000..c1a57f5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/style.json @@ -0,0 +1,33 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-10)", + "borderColor": "var(--info)", + "borderStyle": "solid", + "borderWidth": "1px", + "boxShadow": "none", + "color": "var(--info)", + "fontWeight": "normal", + "margin": "5px", + "textTransform": "uppercase", + "fill": "var(--info)" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": {}, + "100%": { + "backgroundColor": "var(--neutral-20)" + } + } + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/resource.json new file mode 100644 index 0000000..7cd0085 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "81e0a1fe1cf955f91b3c3a251e82d556391386a2cd03f12be279accaa7f1cb22" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/style.json new file mode 100644 index 0000000..9f36a34 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "backgroundColor": "#555555", + "borderTopColor": "#00CC00", + "borderTopStyle": "solid", + "borderTopWidth": "4px", + "boxShadow": "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/resource.json new file mode 100644 index 0000000..ff11358 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "55f79eb06c970e5ccc7f683a9f0fb2b6c6a5c2855ed65977640a61e047f8bb00" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/style.json new file mode 100644 index 0000000..d68e8f4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/style.json @@ -0,0 +1,25 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--success)", + "borderStyle": "none", + "boxShadow": "none", + "margin": "5px", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "var(--success)" + } + }, + { + "pseudo": "active", + "style": { + "color": "var(--neutral-30)" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/resource.json new file mode 100644 index 0000000..747513f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c029a3e0079c7477837f5ce8bfda148bbcf4346cbcce34d9095455de9fe2649b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/style.json new file mode 100644 index 0000000..14f8f71 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/style.json @@ -0,0 +1,33 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-10)", + "borderColor": "var(--success)", + "borderStyle": "solid", + "borderWidth": "1px", + "boxShadow": "none", + "color": "var(--success)", + "fontWeight": "normal", + "margin": "5px", + "textTransform": "uppercase", + "fill": "var(--success)" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": {}, + "100%": { + "backgroundColor": "var(--neutral-20)" + } + } + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/resource.json new file mode 100644 index 0000000..6eee8ea --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "623c6e17e07439732a1d761ffa7df85a0c68bd6c72d7c7a9dd6192e119594a4d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/style.json new file mode 100644 index 0000000..be9d041 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "backgroundColor": "#555555", + "borderTopColor": "#FFFF00", + "borderTopStyle": "solid", + "borderTopWidth": "4px", + "boxShadow": "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/resource.json new file mode 100644 index 0000000..6139815 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8e4e279dff92dff9a9da86a244ef9dd9b3185c23c3b2c0b4af0edec44d4ba4ce" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/style.json new file mode 100644 index 0000000..fffccdd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/style.json @@ -0,0 +1,25 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--warning)", + "borderStyle": "none", + "boxShadow": "none", + "margin": "5px", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "var(--warning)" + } + }, + { + "pseudo": "active", + "style": { + "color": "var(--neutral-30)" + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/resource.json new file mode 100644 index 0000000..467e04a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "41a078694d651728b12be9cca2f5579fc7dbab04dd9ee64ebf9383bf804fb2a1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/style.json new file mode 100644 index 0000000..c38ccd0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/style.json @@ -0,0 +1,33 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-10)", + "borderColor": "var(--warning)", + "borderStyle": "solid", + "borderWidth": "1px", + "boxShadow": "none", + "color": "var(--warning)", + "fontWeight": "normal", + "margin": "5px", + "textTransform": "uppercase", + "fill": "var(--warning)" + } + }, + "variants": [ + { + "pseudo": "hover", + "animation": { + "duration": "0.2s", + "direction": "normal", + "iterationCount": "1", + "timingFunction": "ease", + "keyframes": { + "0%": {}, + "100%": { + "backgroundColor": "var(--neutral-20)" + } + } + } + } + ] +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/resource.json new file mode 100644 index 0000000..f8d51cd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "96c44e672b2413c49e068f2fe0cdc9d8b2cd0e36c604d353adb5cb7f999d3abb" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/style.json new file mode 100644 index 0000000..4b15e8f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "#3B3B3B", + "color": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/resource.json new file mode 100644 index 0000000..e22dddd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2c7a56b7ed39584481201711814a1516a7dc3f6916b2eb8dcfdae1cddfaa7c46" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/style.json new file mode 100644 index 0000000..8d0e0d9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#EEEEEE " + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/resource.json new file mode 100644 index 0000000..d87d547 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6065cc67ac7b28cc4c8795723e00140c70ffe9c08e15c036f5faa7499a96bfef" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/style.json new file mode 100644 index 0000000..9d98d89 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#2B2B2B" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/resource.json new file mode 100644 index 0000000..f8d51cd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "96c44e672b2413c49e068f2fe0cdc9d8b2cd0e36c604d353adb5cb7f999d3abb" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/style.json new file mode 100644 index 0000000..4b15e8f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "#3B3B3B", + "color": "#FFFFFF" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/resource.json new file mode 100644 index 0000000..79044c3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7953772c64e0080d92342a8ca287406ddebda3253b54c17dc9b32271828f98c3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/style.json new file mode 100644 index 0000000..9cc31d7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#EEEEEE" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/resource.json new file mode 100644 index 0000000..75552da --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "63cdf8d36e393c6a546c0a4d81c92a8b87a9d5e66ec3f9da5b2e5878971ec1ea" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/style.json new file mode 100644 index 0000000..6acf469 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "backgroundColor": "#2F73BF", + "fontFamily": "Arial", + "fontSize": "12px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/resource.json new file mode 100644 index 0000000..feca306 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7d0938951c48c8268df585bafcfef1d818c1b2f3ec99e335095aba3f84788189" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/style.json new file mode 100644 index 0000000..b0b8076 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFFFF", + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "12px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/resource.json new file mode 100644 index 0000000..6dbfcdd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b7d65cf3bb8d19578cd6d1174391a14001cb3f7a5dd0aa514c1014fb535c9b71" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/style.json new file mode 100644 index 0000000..88cc7f3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "borderStyle": "none" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/resource.json new file mode 100644 index 0000000..a0857b7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "769324b6f4ffeef8c25e6ad657dca34853732b06d78508960af6f5c4e616ec0b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/style.json new file mode 100644 index 0000000..f037520 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "borderColor": "#FF0000", + "borderStyle": "solid", + "borderWidth": "2px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/resource.json new file mode 100644 index 0000000..96606b5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b533d27339b0f078dc1d87ef14d64f686c5292d904623c079528a1095f3a518d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/style.json new file mode 100644 index 0000000..6660145 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFFFF", + "color": "#000000", + "fontFamily": "Arial" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/resource.json new file mode 100644 index 0000000..c76c602 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f284831b6f985179ae6f6a45da622272315b0d4080c0e52b60342837d803bb95" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/style.json new file mode 100644 index 0000000..8898864 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00", + "color": "#FF0000" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/resource.json new file mode 100644 index 0000000..9f863d7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "68b13f897068b96cd89b1fcfcec4ff67e8e8c2d8b4c232a354054d2218aeeddd" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/style.json new file mode 100644 index 0000000..6cf9be1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "animation": { + "keyframes": { + "0%": { + "backgroundColor": "#FF0000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/resource.json new file mode 100644 index 0000000..d4674ab --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "675563744d4acd29dc810d70f1a193131e178834f815c6de3ab804446d56fd1c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/style.json new file mode 100644 index 0000000..46da093 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00", + "color": "#008000" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/resource.json new file mode 100644 index 0000000..f14edc8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3bbdf0340ddeca2515a694d2884c5b5ab5b808f6791337ef28a117a84f63f6b1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/style.json new file mode 100644 index 0000000..54b23af --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "animation": { + "keyframes": { + "0%": { + "backgroundColor": "#008000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/resource.json new file mode 100644 index 0000000..f997388 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "fc53536f5db680a666b814e1b5fe24124510d555bcb8ef147c46fcd961353d3e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/style.json new file mode 100644 index 0000000..b21b980 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/resource.json new file mode 100644 index 0000000..bf0aef9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "54a8840883fc968533de6c5d2aea9b67bd451f2c7a2c01154af2fdd57fca147a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/style.json new file mode 100644 index 0000000..762c94d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-10)", + "borderColor": "var(--neutral-30)", + "borderStyle": "solid", + "borderWidth": "1px", + "borderRadius": "4px", + "boxShadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", + "margin": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/resource.json new file mode 100644 index 0000000..a2bb02e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2c1558a3902e8c04cf8c4ea38c39d9b3742b3a9e6169a52d4ce8773ab79ddff5" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/style.json new file mode 100644 index 0000000..abab03c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "transparent", + "margin": "1px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/resource.json new file mode 100644 index 0000000..122f237 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e13331c3b72d29b04fbf5ccff90f98c36af8c0d203c5cd1dc356741542833ae2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/style.json new file mode 100644 index 0000000..37f829c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--error)", + "borderTopLeftRadius": "4px", + "borderTopRightRadius": "4px", + "borderBottomLeftRadius": "4px", + "borderBottomRightRadius": "4px", + "color": "var(--neutral-10)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px", + "padding": "2px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/resource.json new file mode 100644 index 0000000..6aa6c87 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8616c2922b7cbaf69b27cdc40a17c47a8ac5dae710e0c055126de3c0f78d65c8" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/style.json new file mode 100644 index 0000000..3f225e0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--info)", + "borderTopLeftRadius": "4px", + "borderTopRightRadius": "4px", + "borderBottomLeftRadius": "4px", + "borderBottomRightRadius": "4px", + "color": "var(--neutral-10)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px", + "padding": "2px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/resource.json new file mode 100644 index 0000000..e0c11fb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "607810e3d208ec39bfa9515d26ce4b2d238b668a3ed1a61df52f7c1cb8c1de63" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/style.json new file mode 100644 index 0000000..4cd4ed4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-60)", + "borderTopLeftRadius": "4px", + "borderTopRightRadius": "4px", + "borderBottomLeftRadius": "4px", + "borderBottomRightRadius": "4px", + "color": "var(--neutral-10)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px", + "padding": "2px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/resource.json new file mode 100644 index 0000000..1b1c4e2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4b2bfacf276e7f33047cc58b94cecc338459859236fa1c70afb578a1c2f11617" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/style.json new file mode 100644 index 0000000..65375f9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--success)", + "borderTopLeftRadius": "4px", + "borderTopRightRadius": "4px", + "borderBottomLeftRadius": "4px", + "borderBottomRightRadius": "4px", + "color": "var(--neutral-10)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px", + "padding": "2px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/resource.json new file mode 100644 index 0000000..334b53d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2a32dea7c29e99ea89a440e87641254eba13065c50b13cc6d3da6973a401361d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/style.json new file mode 100644 index 0000000..fcf27fd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--warning)", + "borderTopLeftRadius": "4px", + "borderTopRightRadius": "4px", + "borderBottomLeftRadius": "4px", + "borderBottomRightRadius": "4px", + "color": "var(--neutral-10)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px", + "padding": "2px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/resource.json new file mode 100644 index 0000000..b65f04b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "de7172bc2c9952343fbdaf933be54f09115d6322a2abefb48388aa2ceed4a144" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/style.json new file mode 100644 index 0000000..e40b9fa --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "margin": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/resource.json new file mode 100644 index 0000000..b8a0a8e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "42d2f212c92264ab32e7c463ad53b61e5bbd595c8c32443d857d7ec539d452ba" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/style.json new file mode 100644 index 0000000..51f7cfa --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "margin": "5px", + "marginLeft": "0px", + "marginRight": "0px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/resource.json new file mode 100644 index 0000000..5552336 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "a12d6d781127a7498df097bdfa1afb7dda81d585a23aafb3e8146a2aebd72356" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/style.json new file mode 100644 index 0000000..c8bd125 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "paddingBottom": "4px", + "paddingLeft": "18px", + "paddingRight": "18px", + "paddingTop": "4px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/resource.json new file mode 100644 index 0000000..93d2d3b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ceb68eb299a29dcbcd5743eedf003037247490d6a32dfad7e492515327fdae1a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/style.json new file mode 100644 index 0000000..de9f0c8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "borderBottomColor": "var(--neutral-30)", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/resource.json new file mode 100644 index 0000000..a5471a4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b9264694f3eac0cf63def2a8be38ed8e5fcde8b78faf941b8137154773045533" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/style.json new file mode 100644 index 0000000..3de2c5a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "style": { + "color": "var(--neutral-70)", + "fontSize": "12px", + "fontWeight": "300", + "lineHeight": "16px", + "marginRight": "10px", + "textTransform": "uppercase" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/resource.json new file mode 100644 index 0000000..49e8ba7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "16be2163c211658d9853c45e6c8d83834e40124f785ff0073f3a51013bc16a20" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/style.json new file mode 100644 index 0000000..fc7c06a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "marginBottom": "2px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/resource.json new file mode 100644 index 0000000..838289b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e999b3390b2641f45b6c4681a1aebf932e85c346e06eb815fecbbb81bb7806da" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/style.json new file mode 100644 index 0000000..8b1cf60 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-20)", + "borderBottomColor": "var(--neutral-30)", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "color": "var(--neutral-80)", + "fontSize": "12px", + "fontWeight": "bold", + "paddingLeft": "6px", + "paddingRight": "6px", + "textTransform": "uppercase", + "fill": "var(--neutral-70)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/resource.json new file mode 100644 index 0000000..069acf0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "495a9df5ace18cff2b132cbd6bceb45dd14f8e7aefafe844080b05d3399ae176" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/style.json new file mode 100644 index 0000000..2f848da --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/style.json @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "transparent", + "borderBottomColor": "var(--neutral-30)", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "color": "var(--neutral-80)", + "fontSize": "12px", + "fontWeight": "bold", + "paddingLeft": "6px", + "paddingRight": "6px", + "textTransform": "uppercase", + "fill": "var(--neutral-70)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/resource.json new file mode 100644 index 0000000..1336b94 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "91cb9292a4986c4c724cf3a949c651107c782c78020e47d1f1ab45a9bfa8f667" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/style.json new file mode 100644 index 0000000..6c627a7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "color": "var(--info)", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/data.bin new file mode 100644 index 0000000..23b71b2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/data.bin @@ -0,0 +1 @@ +{"base":{"style":{"fontWeight":"bold"}}} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/resource.json new file mode 100644 index 0000000..ec41f3d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "duscoope", + "timestamp": "2024-01-19T19:06:21Z" + }, + "lastModificationSignature": "724ec4a29768744e8a98b04beeaeffbe2786f9510a4c74fb1f704afedd7945f0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/resource.json new file mode 100644 index 0000000..30d9a70 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ed1c3f6b9290025ba16d620902f6641109c1b9e0ef7cfb13e4db23159bab8282" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/style.json new file mode 100644 index 0000000..982f4b3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "style": { + "backgroundColor": "#FAFAFA", + "borderColor": "#D5D5D5", + "borderStyle": "solid", + "borderWidth": "1px", + "borderRadius": "4px", + "boxShadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", + "margin": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/resource.json new file mode 100644 index 0000000..b65f04b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "de7172bc2c9952343fbdaf933be54f09115d6322a2abefb48388aa2ceed4a144" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/style.json new file mode 100644 index 0000000..e40b9fa --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "margin": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/data.bin new file mode 100644 index 0000000..b3d0ed8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/data.bin @@ -0,0 +1 @@ +{"base":{"style":{"paddingBottom":"4px","paddingLeft":"18px","paddingRight":"18px","paddingTop":"4px"}}} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/resource.json new file mode 100644 index 0000000..2972ec1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "duscoope", + "timestamp": "2024-01-19T19:06:22Z" + }, + "lastModificationSignature": "79005be23b3ff6489426936b79cf3f2ebab8457a1095db43007414b860a6f3fd" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/data.bin new file mode 100644 index 0000000..f7eedd7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/data.bin @@ -0,0 +1 @@ +{"base":{"style":{"borderBottomColor":"#D5D5D5","borderBottomStyle":"solid","borderBottomWidth":"1px"}}} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/resource.json new file mode 100644 index 0000000..ad62454 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "duscoope", + "timestamp": "2024-01-19T19:06:21Z" + }, + "lastModificationSignature": "f0ee9cc172435a4fe10515590d008d84463ab6a3dc039b86f4f469e10944b7a9" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/resource.json new file mode 100644 index 0000000..2d87f7a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1042c756d2aae3bbedf278beb831ce4a6dd545608c101c7ed864ec730aae41b3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/style.json new file mode 100644 index 0000000..12be6e1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "style": { + "color": "#8E8E8E", + "fontSize": "12px", + "fontWeight": "300", + "lineHeight": "16px", + "marginRight": "10px", + "textTransform": "uppercase" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/resource.json new file mode 100644 index 0000000..49e8ba7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "16be2163c211658d9853c45e6c8d83834e40124f785ff0073f3a51013bc16a20" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/style.json new file mode 100644 index 0000000..fc7c06a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "marginBottom": "2px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/data.bin new file mode 100644 index 0000000..0e16719 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/data.bin @@ -0,0 +1 @@ +{"base":{"style":{"backgroundColor":"#E6EAEEAD","borderBottomColor":"#D5D5D5","borderBottomStyle":"solid","borderBottomWidth":"1px","color":"#2E2E2E","fontSize":"12px","fontWeight":"bold","paddingLeft":"6px","paddingRight":"6px","textTransform":"uppercase","fill":"#2E2E2E"}}} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/resource.json new file mode 100644 index 0000000..44ebc46 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "duscoope", + "timestamp": "2024-01-19T19:06:21Z" + }, + "lastModificationSignature": "7c6da0dbdc1a180ea324c7fb08f7188364ef2e586aed38dfa3b92f24cda32db7" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/resource.json new file mode 100644 index 0000000..8397f46 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f964d10e26fb741813855883de15a2c187a5f346a02a01e679a3b5761de54003" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/style.json new file mode 100644 index 0000000..d740f8f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "color": "#2B2B2B", + "fontSize": "12px", + "fontWeight": "bold", + "lineHeight": "16px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/resource.json new file mode 100644 index 0000000..ebc5912 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "443c3f8a985799f9827d5f5dcf894dde72f73656bcc720a99b454194e2e33f0d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/style.json new file mode 100644 index 0000000..f1b5f0e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "borderColor": "#CCCCCC", + "borderStyle": "solid", + "borderWidth": "1px", + "borderRadius": "4px", + "padding": "4px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/resource.json new file mode 100644 index 0000000..e33da20 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-05T08:37:40Z" + }, + "lastModificationSignature": "bfb70b68d3a12d914611c9d40239c90823c28d24c9fd0a7ef4b16e100737b4c1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/style.json new file mode 100644 index 0000000..29a285e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/style.json @@ -0,0 +1,5 @@ +{ + "base": { + "style": {} + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/resource.json new file mode 100644 index 0000000..7b5fc3a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-07-27T16:42:33Z" + }, + "lastModificationSignature": "944037d4498d6ee27e3f761b03935b9598a0b16473095faa7bd1ef1dd009cbf6" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/style.json new file mode 100644 index 0000000..bbd0dd7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "animation": { + "duration": "2.5s", + "keyframes": { + "0%": { + "boxShadow": "0 0 12px 5px rgba(88, 158, 249, 0.8)" + }, + "50%": { + "boxShadow": "0 0 20px 8px rgba(88, 158, 249, 1)" + }, + "100%": { + "boxShadow": "0 0 5px 2px rgba(88, 158, 249, 0.3)" + } + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/resource.json new file mode 100644 index 0000000..ac31eed --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "66c9e8921f6f675e4a35f1066421d0154260924b985cc2e43597f365d3eeacb0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/style.json new file mode 100644 index 0000000..1ca57f6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "animation": { + "duration": "2.5s", + "keyframes": { + "0%": { + "boxShadow": "0 0 12px 5px rgba(245, 95, 89, 0.8)" + }, + "50%": { + "boxShadow": "0 0 20px 8px rgba(245, 95, 89, 1)" + }, + "100%": { + "boxShadow": "0 0 5px 2px rgba(245, 95, 89, 0.3)" + } + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/resource.json new file mode 100644 index 0000000..402a68b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-07-27T16:42:33Z" + }, + "lastModificationSignature": "ca750595e44147b3c01a64e465163166884ed36989a4d4e064a5b4e379ed8854" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/style.json new file mode 100644 index 0000000..825d919 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "animation": { + "duration": "2.5s", + "keyframes": { + "0%": { + "boxShadow": "0 0 12px 5px rgba(255, 255, 0, 0.8)" + }, + "50%": { + "boxShadow": "0 0 20px 8px rgba(255, 255, 0, 1)" + }, + "100%": { + "boxShadow": "0 0 5px 2px rgba(255, 255, 0, 0.3)" + } + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/resource.json new file mode 100644 index 0000000..1481dd3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-07-27T16:42:33Z" + }, + "lastModificationSignature": "e0c36457597a3571dd8c19ea855b57d733959b601c34ea9137a18735a0222f7c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/style.json new file mode 100644 index 0000000..022d5f3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "animation": { + "duration": "2.5s", + "keyframes": { + "0%": { + "boxShadow": "0 0 12px 5px rgba(247, 160, 96, 0.8)" + }, + "50%": { + "boxShadow": "0 0 20px 8px rgba(247, 160, 96, 1)" + }, + "100%": { + "boxShadow": "0 0 5px 2px rgba(247, 160, 96, 0.3)" + } + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse/style.json new file mode 100644 index 0000000..825d919 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "animation": { + "duration": "2.5s", + "keyframes": { + "0%": { + "boxShadow": "0 0 12px 5px rgba(255, 255, 0, 0.8)" + }, + "50%": { + "boxShadow": "0 0 20px 8px rgba(255, 255, 0, 1)" + }, + "100%": { + "boxShadow": "0 0 5px 2px rgba(255, 255, 0, 0.3)" + } + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/resource.json new file mode 100644 index 0000000..3de7592 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f7406832b95930419f80fc8bb87232ed6cfcc16ff7e2add345abc43dce680daa" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/style.json new file mode 100644 index 0000000..37e9238 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--callToAction)", + "margin": "4px", + "padding": "4px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/resource.json new file mode 100644 index 0000000..2d1a0e6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ba250af82e9ff6b534d42def4416fc462e8256d1877c72525a1fd2346cdf4355" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/style.json new file mode 100644 index 0000000..b9257ea --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--neutral-30)", + "color": "var(--neutral-50)", + "margin": "4px", + "padding": "4px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/resource.json new file mode 100644 index 0000000..51b0a63 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "353d1f6e895a7614b12443524ee28df72bc3cf2d0faf33d5dab7bf3604400713" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/style.json new file mode 100644 index 0000000..737d890 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "var(--error)", + "color": "#2B2B2B", + "margin": "4px", + "padding": "4px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/resource.json new file mode 100644 index 0000000..ee8396b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "56eefabc2c08a65f1e6a9ca639583b47f9e3ef72c8e79c4f0120d93ce3668adf" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/style.json new file mode 100644 index 0000000..43da557 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#808080", + "borderStyle": "none", + "color": "#555555", + "margin": "5px", + "fill": "#2B2B2B" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/resource.json new file mode 100644 index 0000000..ee8396b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "56eefabc2c08a65f1e6a9ca639583b47f9e3ef72c8e79c4f0120d93ce3668adf" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/style.json new file mode 100644 index 0000000..43da557 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/style.json @@ -0,0 +1,12 @@ +{ + "base": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#808080", + "borderStyle": "none", + "color": "#555555", + "margin": "5px", + "fill": "#2B2B2B" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/resource.json new file mode 100644 index 0000000..d28011f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "14e2664998fce713f5eb781e239bafb64e055944bf89c5c06008b52ce68ee315" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/style.json new file mode 100644 index 0000000..9a6d62e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "backgroundColor": "transparent", + "borderStyle": "none" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/resource.json new file mode 100644 index 0000000..dd057e3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4537a8ffb735fdfde7ca2ed392f2d8b5242f175ad0592654014a138098c1365d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/style.json new file mode 100644 index 0000000..a2681bd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/resource.json new file mode 100644 index 0000000..5bd811b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "d71c4bc53b1ad816b63dc88de7678244ff70c504c9feb1428366dd6b2fbe35e4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/style.json new file mode 100644 index 0000000..916e126 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/style.json @@ -0,0 +1,11 @@ +{ + "base": { + "style": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/resource.json new file mode 100644 index 0000000..8d3b6b1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "696a34b42a46f5c8877d88770077a0002dc40423710ef088b5dd70bd88029b67" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/style.json new file mode 100644 index 0000000..6bb0b38 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "paddingBottom": "5px", + "paddingLeft": "5px", + "paddingRight": "5px", + "paddingTop": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/resource.json new file mode 100644 index 0000000..c43abb3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "763ca54255054b405500b5e9821fed68e7c15d6606c8e41dbaee255ae5f60ec6" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/style.json new file mode 100644 index 0000000..434d8f1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": "0.5px", + "borderLeftStyle": "none", + "borderLeftWidth": "0.5px", + "borderRightStyle": "none", + "borderRightWidth": "0.5px", + "borderTopStyle": "solid", + "borderTopWidth": "0.5px", + "color": "#808080", + "fontFamily": "Roboto", + "fontSize": "12px", + "fontWeight": "lighter" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/resource.json new file mode 100644 index 0000000..53152d9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c6d565f6d9d7e1486a3a23af50404ffb8f957a17cc43ef1880c4ea141a566e5a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/style.json new file mode 100644 index 0000000..3054d91 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/style.json @@ -0,0 +1,18 @@ +{ + "base": { + "style": { + "backgroundColor": "#EEEEEE ", + "borderColor": "#808080", + "borderStyle": "solid", + "borderWidth": "0.5px", + "borderTopLeftRadius": "10px", + "borderTopRightRadius": "10px", + "borderBottomLeftRadius": "10px", + "borderBottomRightRadius": "10px", + "color": "#FBFCFC", + "cursor": "auto", + "fontFamily": "Arial", + "fontWeight": "lighter" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/resource.json new file mode 100644 index 0000000..3120a5e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "89b67366db982d45417263469dc6ebb4754ed735d81c8b2e988bf8ae48781889" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/style.json new file mode 100644 index 0000000..c9d9460 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFDC00" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/resource.json new file mode 100644 index 0000000..80b937c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1138a2feb5d9b21d97cd71085ef2edb7d9aa9dc470f241b6c62c5a1e43ef6578" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/style.json new file mode 100644 index 0000000..55e15f2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#8C8C8C", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/resource.json new file mode 100644 index 0000000..7b3c8a4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "97213fa1880be55f9e65379a77f9c3ade2a645216c3d6176ad0ccb484061add3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/style.json new file mode 100644 index 0000000..a6ba74f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/resource.json new file mode 100644 index 0000000..6087932 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c1063b49f652d9d808153be13a2fe57bbb7228901b3171dee3d6a270c2b80f2b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/style.json new file mode 100644 index 0000000..a5d68c5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/resource.json new file mode 100644 index 0000000..a826970 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "944a41a1f530c1aac938bc43b0fca6c5a8594a4cff6c077b98fde42cbf7f2f54" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/style.json new file mode 100644 index 0000000..7b36e1d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/resource.json new file mode 100644 index 0000000..44b912a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b3a4a6aa45796677b6dea5e14795b20451532ba247959c34a32fc0ed8394feaf" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/style.json new file mode 100644 index 0000000..a222549 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400B3", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/resource.json new file mode 100644 index 0000000..aa13e02 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ca633d5a182556c28f58d6cf0a75a8d876d7ed2f4bfd5ad4fab3eb435e6ee1c0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/style.json new file mode 100644 index 0000000..198a4d1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007EFC", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/resource.json new file mode 100644 index 0000000..80b937c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1138a2feb5d9b21d97cd71085ef2edb7d9aa9dc470f241b6c62c5a1e43ef6578" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/style.json new file mode 100644 index 0000000..55e15f2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#8C8C8C", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/resource.json new file mode 100644 index 0000000..7b3c8a4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "97213fa1880be55f9e65379a77f9c3ade2a645216c3d6176ad0ccb484061add3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/style.json new file mode 100644 index 0000000..a6ba74f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/resource.json new file mode 100644 index 0000000..7b3c8a4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "97213fa1880be55f9e65379a77f9c3ade2a645216c3d6176ad0ccb484061add3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/style.json new file mode 100644 index 0000000..a6ba74f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/resource.json new file mode 100644 index 0000000..92ecc31 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "9e3d3622f6b6fe94c8673adce6e4d444cad3fa13dec3b40df0878aa05b99bca2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/style.json new file mode 100644 index 0000000..2887093 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF8000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/resource.json new file mode 100644 index 0000000..19301bd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8fca873cb4d4c3767f381d6839838c584c222d2893f96aad46a35217321396db" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/style.json new file mode 100644 index 0000000..571f7e6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/resource.json new file mode 100644 index 0000000..ea4f852 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "69c1fde28be64b19007ecdc276586b630bf0f5498cb27bf06b78d9b21ce57192" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/style.json new file mode 100644 index 0000000..06fca02 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/resource.json new file mode 100644 index 0000000..f10c193 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "9e6d2f6685262b291f79fdba9fe4050fc6dd3f2a4534bc3e3d4b50a0985f83db" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/style.json new file mode 100644 index 0000000..812c3c8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/resource.json new file mode 100644 index 0000000..aa13e02 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ca633d5a182556c28f58d6cf0a75a8d876d7ed2f4bfd5ad4fab3eb435e6ee1c0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/style.json new file mode 100644 index 0000000..198a4d1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007EFC", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/resource.json new file mode 100644 index 0000000..43b7a2c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2126e88ce57230ffd398a422a763ee37d8bc178f8d3e6218bb3d10dc1f94da5a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/style.json new file mode 100644 index 0000000..fcb4cbc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/resource.json new file mode 100644 index 0000000..f15d118 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "55168d27b34a758e38bfe4133eaf3462ea88879866575a15ea7451ce93103905" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/style.json new file mode 100644 index 0000000..ea4de11 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#00CC00", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/resource.json new file mode 100644 index 0000000..1c13994 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1bb886dfdc12b37ac679e6a797f4fe85d570e57fc38dff863671773e206ba4b5" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/style.json new file mode 100644 index 0000000..92691b5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007DFA", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/resource.json new file mode 100644 index 0000000..3b98373 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7f59f3595a0b0516ebb83eb153cb669633751c7a41802af54d69d01e3a17e5e4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/style.json new file mode 100644 index 0000000..b9337b5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#CCCCFF", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/resource.json new file mode 100644 index 0000000..1b3d950 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b4d86ec059286aa013918364e5dcfb0260b1f80d2c0919a6ab4e3ab3910c6146" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/style.json new file mode 100644 index 0000000..fb1801e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#808080" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/resource.json new file mode 100644 index 0000000..9e83886 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "be77dbd12ad48502aea7d0c9bcde166a4f2930e778c87cf33492a5a54a12bb05" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/style.json new file mode 100644 index 0000000..8806361 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FF0000" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/resource.json new file mode 100644 index 0000000..6350c37 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "a85a89f21be543ce1c84ace6b158763dda6ef646dc0276914f2eb8be2ab73ee2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/style.json new file mode 100644 index 0000000..cfcac7b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/resource.json new file mode 100644 index 0000000..5ed8a64 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8c03348118547621269b642817a09086963994b93f069c3dd3df9083589df93d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/style.json new file mode 100644 index 0000000..6381a93 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF8000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/resource.json new file mode 100644 index 0000000..3b1b69a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "435e7079f91cc27bb11bc90e7bc32e25d74ca2068989d9792fa26004bda21114" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/style.json new file mode 100644 index 0000000..8586d48 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FFFF00B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/resource.json new file mode 100644 index 0000000..9b4d136 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b925e55e4675dfab4ce92e1c55e267e530c594b67b13b8c8611429afc25b2a1d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/style.json new file mode 100644 index 0000000..e5f9982 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007EFCB3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/resource.json new file mode 100644 index 0000000..58e2b07 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "bd84bda9ebe23b6b1ee7f4c99807509758528c04e1fbb09738f978fdeefc62ca" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/style.json new file mode 100644 index 0000000..e5b9343 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#00CC00" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/resource.json new file mode 100644 index 0000000..3e3fdda --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "db531ee82e8af5dc73c6f02ef8cc8651dcd3ae499bc954991ee120e3c6f2612f" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/style.json new file mode 100644 index 0000000..dbe7f65 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#CCCCFF" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/resource.json new file mode 100644 index 0000000..1b3d950 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b4d86ec059286aa013918364e5dcfb0260b1f80d2c0919a6ab4e3ab3910c6146" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/style.json new file mode 100644 index 0000000..fb1801e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#808080" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/resource.json new file mode 100644 index 0000000..39ec95b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f627b38753c2c6d76827fdf42f9b781fa67a0638d81a8762997db22ac04e52a4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/style.json new file mode 100644 index 0000000..f79ee95 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/resource.json new file mode 100644 index 0000000..c97871a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "446f4bbd562da2d75dae562aaa4349aa0e5c38b3a94a43f4e0980a7f4ae72a46" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/style.json new file mode 100644 index 0000000..d06c0f1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#F00077" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/resource.json new file mode 100644 index 0000000..e709ae4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "41abd66837c6e7c6adce3f2f7380fc4168276edcc242b0757361b8eed8a97b9c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/style.json new file mode 100644 index 0000000..66627cd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF6000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/resource.json new file mode 100644 index 0000000..d4e7374 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "79204d68965cd8409228765cfc1880e2406c1cba92cc81b8ba6355cbb71dd71b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/style.json new file mode 100644 index 0000000..bfcced5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FCC400" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/resource.json new file mode 100644 index 0000000..e95d990 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b97ff294068bc45aab1033cccb8171846f97af345e02e3d56e465849aa8f0227" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/style.json new file mode 100644 index 0000000..677242c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/style.json @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007DFA" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/resource.json new file mode 100644 index 0000000..c0c5b97 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "edaa00be7378bdb5b1f6618e83bc4d90318ef230b87e85bb526c0c596946a537" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/style.json new file mode 100644 index 0000000..8ddfe1b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#4747FF" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/resource.json new file mode 100644 index 0000000..f2ab42d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e79def0feb375bc1747d7d2576996689d981397afcfa070fa58fae159b1ab1e2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/style.json new file mode 100644 index 0000000..55e7693 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FFB200" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/resource.json new file mode 100644 index 0000000..5a83202 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4068bfe871ee5a186590a886a0db7c21c410e1d71e1b50d0b529e26dd07bbba3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/style.json new file mode 100644 index 0000000..4bfcd6d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#00CC00" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/resource.json new file mode 100644 index 0000000..6f275c2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e3cb8c318461656ca163230099d81808fbe80f80e45625a0c90a11cbc6b72bde" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/style.json new file mode 100644 index 0000000..d615c70 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#CCCCFF" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/resource.json new file mode 100644 index 0000000..aa26404 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3777f5f030c7d2c662afcf799dac0224c4e6f76abf44ed12e04c9ef509391c73" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/style.json new file mode 100644 index 0000000..1c9a08f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "12px", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/resource.json new file mode 100644 index 0000000..2c72a61 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e68095578fc5b1cd5b6da361e1fbb636e8619ec382cbb783b58a8c49cb91640a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/style.json new file mode 100644 index 0000000..dee08f7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": "12px", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/resource.json new file mode 100644 index 0000000..0af857c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7472c4201b4f9a4f8c2c9a6feb94d26db985e751e75dc351f958051331181fbf" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/style.json new file mode 100644 index 0000000..39fd938 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "fontFamily": "Arial", + "fontSize": "10px", + "fontWeight": "bold", + "textAlign": "left" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/resource.json new file mode 100644 index 0000000..b268164 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "24e03971998659df7419da7e4458edca1bc2da4c2b06fc37d16b8798c92e9e3e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/style.json new file mode 100644 index 0000000..4260a62 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/style.json @@ -0,0 +1,9 @@ +{ + "base": { + "style": { + "fontFamily": "Arial", + "fontSize": "10px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/resource.json new file mode 100644 index 0000000..5c13ab2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "54fa37ace63e9f6a89e3121b950f40617f2a38c25faadfa8ecbaa216c59b13a2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/style.json new file mode 100644 index 0000000..e2e8661 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "overflowWrap": "normal", + "paddingLeft": "4px", + "paddingRight": "4px", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/resource.json new file mode 100644 index 0000000..f4ef109 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "65aaf505764ebe541cadad601b8a2efad4625515c6bbc124859349e7e9c04b35" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/style.json new file mode 100644 index 0000000..52f9b5a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "color": "var(--neutral-80)", + "fontSize": "min(1.0vw, 14px)" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/resource.json new file mode 100644 index 0000000..b65f04b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "de7172bc2c9952343fbdaf933be54f09115d6322a2abefb48388aa2ceed4a144" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/style.json new file mode 100644 index 0000000..e40b9fa --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/style.json @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "margin": "5px" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/resource.json new file mode 100644 index 0000000..3937603 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "11bdbc042f41523d08c262cdb89aee5c1b6559fb0b39a94373def5891904b076" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/style.json new file mode 100644 index 0000000..27ac20c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "paddingLeft": "4px", + "textAlign": "left" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/resource.json new file mode 100644 index 0000000..5327a91 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7c4ec037bcff49eff959414810a4c3263c1079f17344edcceef198fa0d134755" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/style.json new file mode 100644 index 0000000..7304b53 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/style.json @@ -0,0 +1,8 @@ +{ + "base": { + "style": { + "paddingRight": "4px", + "textAlign": "right" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/resource.json new file mode 100644 index 0000000..25a4202 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "41a92e5a2538077c4497b246161d67d0e11b7f59a73cc159d36480792db2da17" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/style.json new file mode 100644 index 0000000..55e6395 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/style.json @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "color": "var(--neutral-80)", + "fontSize": "min(2.0vw, 36px)", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/resource.json new file mode 100644 index 0000000..11daf1a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "style.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1a05be7577ea4e991515fcb3a4be177a53b76153978bf096b8ea2b9d84fd303b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/style.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/style.json new file mode 100644 index 0000000..29a285e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/style.json @@ -0,0 +1,5 @@ +{ + "base": { + "style": {} + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/resource.json new file mode 100644 index 0000000..f2d68c0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "stylesheet.css" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "01819e04564578bcd6afa2dfdf7409c546d8a3baae86e79f4e4fb60a4f13569e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/stylesheet.css b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/stylesheet.css new file mode 100644 index 0000000..9e68540 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/stylesheet.css @@ -0,0 +1,70 @@ +/* Direct stylesheet authoring is an advanced feature. Knowledge of CSS required.*/ + +.psc-x1 { transition: all .2s ease-in-out; } +.psc-x1:hover { transform: scale(1.5) !important; z-index: 5;} + + +.psc-x2 { transition: all .2s ease-in-out; } +.psc-x2:hover { transform: scale(2) !important; z-index: 5;} + +.psc-x3 { transition: all .2s ease-in-out; } +.psc-x3:hover { transform: scale(3) !important; z-index: 5;} + +/* Set the styling for the Table component checkbox colour.*/ +.ia_tableComponent[data-component="ia.display.table"] .ia_checkbox__checkedIcon { + color: black; +} +.ia_tableComponent[data-component="ia.display.table"] .ia_checkbox__uncheckedIcon { + color: black; +} + +div[data-component="ia.input.fileupload"] .ia_button--primary { + background-color: var(--neutral-30); + border-style: None; + color: black; + border-radius:20px; +} + + +/* Help page styles */ + +.psc-background:hover { + box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + transition: box-shadow 0.9s ease-in-out; +} + +.psc-background-none { + box-shadow: 0 0px 0px 0 , 0 0px 0px 0; + transition: box-shadow 0.9s ease-in-out; +} + +@keyframes fadeIn{ + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +.psc-FadeInFast { + animation: fadeIn 2s; +} + +.psc-FadeInMedium { + animation: fadeIn 4s; +} + +.psc-FadeInSlow { + animation: fadeIn 6s; +} + + +@keyframes rotation { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} + +.psc-rotate { + animation: rotation 2s infinite linear; +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/resource.json new file mode 100644 index 0000000..32895d7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4613db240cd58f4ff3abf0f4be66564ecca7ffb9e28e38d5b777041202d564f1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/thumbnail.png new file mode 100644 index 0000000..a547ea4 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/view.json new file mode 100644 index 0000000..f45faa6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/view.json @@ -0,0 +1,108 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "site-overview", + "start_time": { + "$": [ + "ts", + 192, + 1709762531101 + ], + "$ts": 1709762531101 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "custom": { + "s3URI": "SCADA/Other/MAP.svg" + }, + "meta": { + "name": "Image" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "this.custom.s3URI" + }, + "transforms": [ + { + "code": "\treturn AWS.s3.getPresignedURL(self, value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "altText": "none", + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent", + "style": { + "backgroundColor": "#EEEEEE" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/resource.json new file mode 100644 index 0000000..d414ac1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "df4834d3e317c262571be29365f740d2f5d00126365c371d46418b3ddcdd8381" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/thumbnail.png new file mode 100644 index 0000000..eeb4b64 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/view.json new file mode 100644 index 0000000..3077f84 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/view.json @@ -0,0 +1,1281 @@ +{ + "custom": {}, + "params": { + "alarm_states": [ + "Shelved", + "Active", + "Not Active" + ], + "length_of_table_data": 0, + "show_filter": false, + "show_severity_column": true, + "show_state_column": true, + "table_type": "value", + "tagProps": [ + "" + ] + }, + "propConfig": { + "params.alarm_states": { + "paramDirection": "input", + "persistent": true + }, + "params.length_of_table_data": { + "binding": { + "config": { + "expression": "len({/root/Table.props.data})" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + }, + "params.show_filter": { + "paramDirection": "input", + "persistent": true + }, + "params.show_severity_column": { + "paramDirection": "input", + "persistent": true + }, + "params.show_state_column": { + "paramDirection": "input", + "persistent": true + }, + "params.table_type": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "custom": { + "alarms_to_shelve": {}, + "alarms_to_unshelve": {}, + "delay": 2000, + "run_export": false, + "run_update": true, + "severity_filters": [ + "off", + "off", + "off", + "off", + "off" + ], + "shelve_alarms": false, + "shelve_duration": "", + "unshelve_alarms": false + }, + "events": { + "component": { + "onRowClick": [ + { + "config": { + "script": "\n\talarm_id \u003d event.value.Alarm_id\n\tsource_id \u003d event.value.SourceId\n\tif self.props.data[event.row].value.Shelve.value \u003d\u003d True:\n\t\tself.props.data[event.row].value.Shelve.value \u003d False\n\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\tself.custom.alarms_to_shelve.pop(key, \"no key found\")\n\telse:\n\t\tself.props.data[event.row].value.Shelve.value \u003d True\n\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\tself.custom.alarms_to_shelve[key] \u003d event.value.Alarm_id" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "script": "\tif self.view.params.table_type \u003d\u003d \"Shelved\":\n\t\talarm_id \u003d event.value.Alarm_id\n\t\tsource_id \u003d event.value.SourceId\n\t\t\n\t\tif self.props.data[event.row].value.Unshelve.value \u003d\u003d True:\n\t\t\tself.props.data[event.row].value.Unshelve.value \u003d False\n\t\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\t\tself.custom.alarms_to_unshelve.pop(key, \"no key found\")\n\t\telse:\n\t\t\tself.props.data[event.row].value.Unshelve.value \u003d True\n\t\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\t\tself.custom.alarms_to_unshelve[key] \u003d event.value.Alarm_id" + }, + "scope": "G", + "type": "script" + } + ], + "onRowDoubleClick": { + "config": { + "script": "\trow \u003d event.value\n\tsource_id \u003d row.get(\"SourceId\")\n\tsource_id \u003d source_id.replace(\" \",\"\")\n\tconfig.project_config.source_id_lookup(self, source_id)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "1080px" + }, + "propConfig": { + "custom.device": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + }, + "custom.run_export": { + "onChange": { + "enabled": null, + "script": "\trun_export \u003d self.custom.run_export\n\tif run_export:\n\t\tdata \u003d self.props.data\n\t\trow_data \u003d []\n\t\tfor i,j in enumerate(data):\n\t\t\tvalue \u003d j[\"value\"]\n\t\t\tif i \u003d\u003d 0:\n\t\t\t\theader \u003d [item for item in value] \t\n\t\t\trow \u003d [value[item][\"value\"] for item in value]\n\t\t\tif not isinstance(row[3], int):\n\t\t\t\trow[3] \u003d 0\t\t\t\n\t\t\trow_data.append(row) \n\t\t\n\t\talarms_data \u003d system.dataset.toDataSet(header,row_data)\n\t\thtml_data \u003d system.dataset.dataSetToHTML(1, alarms_data, \"RealTimeAlarms\")\n\t\tsystem.perspective.download(\"myExport.html\",html_data)\n\t\tself.custom.run_export \u003d False" + } + }, + "custom.severity_filters[0]": { + "access": "PRIVATE" + }, + "custom.shelve_alarms": { + "onChange": { + "enabled": null, + "script": "\tif self.custom.shelve_alarms:\n\t\tsource_ids_to_shelve \u003d []\n\t\tids_to_shelve \u003d [] \n\t\tfor k,v in self.custom.alarms_to_shelve.items():\n\t\t\tsource_id, alarm_id \u003d alarms.alarm_tables.unformat_shelve_key(k)\n\t\t\tsource_ids_to_shelve .append(source_id)\n\t\t\tids_to_shelve.append(alarm_id)\n\t\twhid \u003d self.session.custom.fc\n\t\tduration \u003d self.custom.shelve_duration\n\t\tCommands.shelve_alarms.send_shelve_request(whid, source_ids_to_shelve, \"shelve\", duration, ids_to_shelve)\n\t\tself.custom.alarms_to_shelve \u003d {}\n\t\tself.custom.shelve_alarms \u003d False\n\t\t \t" + } + }, + "custom.unshelve_alarms": { + "onChange": { + "enabled": null, + "script": "\tif self.custom.unshelve_alarms:\n\t\tsource_ids_to_shelve \u003d []\n\t\tids_to_shelve \u003d [] \n\t\tfor k,v in self.custom.alarms_to_unshelve.items():\n\t\t\tsource_id, alarm_id \u003d alarms.alarm_tables.unformat_shelve_key(k)\n\t\t\tsource_ids_to_shelve .append(source_id)\n\t\t\tids_to_shelve.append(alarm_id)\n\t\twhid \u003d self.session.custom.fc\n\t\tduration \u003d 0\n\t\tCommands.shelve_alarms.send_shelve_request(whid, source_ids_to_shelve, \"unshelve\", duration, ids_to_shelve)\n\t\tself.custom.alarms_to_unshelve \u003d {}\n\t\tself.custom.unshelve_alarms \u003d False" + } + }, + "custom.update": { + "binding": { + "config": { + "expression": "if({this.custom.run_update},\r\nnow({this.custom.delay}), False)" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\n\tno_filter \u003d False\n\tseverity_filters \u003d self.custom.severity_filters\n\talarm_states \u003d self.view.params.alarm_states\n\ttable_type \u003d self.view.params.table_type\n\twhid \u003d self.session.custom.fc\n\talarms_to_shelve \u003d self.custom.alarms_to_shelve\n\tprovider \u003d \"[%s_SCADA_TAG_PROVIDER]\" % (whid)\n\tif (severity_filters[0] \u003d\u003d \"off\" and severity_filters[1] \u003d\u003d \"off\" \n\tand severity_filters[2] \u003d\u003d \"off\" and severity_filters[3] \u003d\u003d \"off\" \n\tand severity_filters[4] \u003d\u003d \"off\"):\n\t no_filter \u003d True\n\t\n\tif system.tag.exists(provider + \"System/aws_data\"):\n\t\ttags_to_read \u003d system.tag.readBlocking([provider + \"System/aws_data\", \n\t\t\t\t\t\t\t\t\t\t\t\tprovider + \"Configuration/DetailedViews\"])\n\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\tdetailed_view_decoded \u003d system.util.jsonDecode(tags_to_read[1].value)\n\t\tif self.view.params.table_type \u003d\u003d \"Docked-East\":\n\t\t\tdevice_list \u003d [self.custom.device] \n\t\telse:\n\t\t\tdevice_list \u003d detailed_view_decoded.get(self.custom.device,[])\n\t\tif len(decode_alarm_data) \u003e 0:\n\t\t\talt_colour \u003d self.session.custom.colours.colour_impaired\n\t\t\talarms_data \u003d alarms.alarm_tables.get_alarm_table(self, decode_alarm_data, \n\t\t\tseverity_filters, no_filter, device_list, alarm_states, alt_colour,\n\t\t\ttable_type)\t\t\n\t\t\tif len(alarms_data)\u003e0:\n\t\t\t\tself.props.data \u003d alarms_data\n\t\t\telse:\n\t\t\t\tself.props.data \u003d []\n\t\telse:\n\t\t\tself.props.data \u003d []\n\telse:\n\t\tself.props.data \u003d []" + } + }, + "props.columns[2].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" + }, + "type": "expr" + } + }, + "props.columns[3].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" + }, + "type": "expr" + } + }, + "props.columns[4].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" + }, + "type": "expr" + } + }, + "props.columns[5].visible": { + "binding": { + "config": { + "path": "view.params.show_severity_column" + }, + "type": "property" + } + }, + "props.columns[6].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", True, False)" + }, + "type": "expr" + } + }, + "props.columns[7].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" + }, + "type": "expr" + } + }, + "props.columns[8].visible": { + "binding": { + "config": { + "expression": "if({view.params.table_type} \u003d \"Shelved\", True, False)" + }, + "type": "expr" + } + }, + "props.filter.enabled": { + "binding": { + "config": { + "path": "view.params.show_filter" + }, + "type": "property" + } + }, + "props.selection.data": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d self.props.selection.data\n\tsystem.perspective.sendMessage(\"alarms-to-shelve\", payload \u003d payload, scope \u003d \"page\")" + } + } + }, + "props": { + "cells": { + "style": { + "marginLeft": 5, + "marginRight": 5, + "overflowWrap": "normal", + "wordWrap": "normal" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SourceId", + "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": "Message", + "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 HH:mm:ss", + "editable": false, + "field": "Timestamp", + "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": "", + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "00:00:00", + "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": "", + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "State", + "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": "", + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "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": "", + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "Expiration", + "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": "", + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Shelve", + "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", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Unshelve", + "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", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Alarm_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": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Type", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "icon": { + "color": "#000000" + } + } + }, + "filter": {}, + "headerStyle": { + "classes": "Background-Styles/Controller" + }, + "selection": { + "mode": "multiple interval" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "severity-filters", + "pageScope": true, + "script": "\n\tcritical \u003d payload.get(\"critical\")\n\tif critical \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[5] \u003d 5\n\tif critical \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[5] \u003d \"off\"\n\t\n\thigh \u003d payload.get(\"high\")\n\tif high \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[4] \u003d 4\n\tif high \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[4] \u003d \"off\"\n\t\n\tmedium \u003d payload.get(\"medium\")\n\tif medium \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[3] \u003d 3\n\tif medium \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[3] \u003d \"off\"\n\t\n\tlow \u003d payload.get(\"low\")\n\tif low \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[2] \u003d 2\n\tif low \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[2] \u003d \"off\"\n\t\n\tdiagnostic \u003d payload.get(\"diagnostic\")\n\tif diagnostic \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[1] \u003d 1\n\tif diagnostic \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[1] \u003d \"off\"", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-table", + "pageScope": true, + "script": "\t# implement your handler here\n\tupdate \u003d payload[\"update\"]\n\tself.custom.run_update \u003d update", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "run-alarm-export", + "pageScope": true, + "script": "\t# implement your handler here\n\tif self.view.params.table_type \u003d\u003d \"Realtime\":\n\t\texport \u003d payload[\"export\"]\n\t\tself.custom.run_export \u003d export", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tseverity_filters \u003d self.custom.severity_filters\n\tseverity_filters[0] \u003d \"off\"\n\tseverity_filters[1] \u003d \"off\"\n\tseverity_filters[2] \u003d \"off\"\n\tseverity_filters[3] \u003d \"off\"\n\tseverity_filters[4] \u003d \"off\"\n\tself.custom.alarms_to_shelve \u003d {}", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "shelve-alarms", + "pageScope": true, + "script": "\tduration \u003d payload[\"duration\"]\n\tself.custom.shelve_duration \u003d duration\n\tself.custom.shelve_alarms \u003d True", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "unshelve-alarms", + "pageScope": true, + "script": "\tself.custom.unshelve_alarms \u003d True", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/resource.json new file mode 100644 index 0000000..8b1a2c0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "dd4b0f887ec3213936fcaa0ae25e861eafd7f375bd884a85394852ce615cc1fc" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/thumbnail.png new file mode 100644 index 0000000..9c71669 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/view.json new file mode 100644 index 0000000..821b5a2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/view.json @@ -0,0 +1,1978 @@ +{ + "custom": {}, + "params": { + "PLCTagPath": "value" + }, + "propConfig": { + "params.PLCTagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 1920 + } + }, + "root": { + "children": [ + { + "custom": { + "AlarmsToShelve": "{}", + "delay": 2000, + "device": "value", + "run_export": false, + "run_update": false, + "severity_filters": [ + "off", + "off", + "off", + "off", + "off" + ] + }, + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\trow \u003d event.value\n\tmhe_id \u003d row.get(\"SourceId\")\n\tnavigation.amzl_navigation.navigate_to_alarm(self, mhe_id)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Active_Table" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "custom.AlarmsToShelve": { + "onChange": { + "enabled": null, + "script": "\n\tpayload \u003d self.custom.AlarmsToShelve\n\tsystem.perspective.sendMessage(\"alarms-to-shelve\", payload \u003dpayload , scope \u003d \"session\") " + } + }, + "custom.run_export": { + "onChange": { + "enabled": null, + "script": "\trun_export \u003d self.custom.run_export\n\tif run_export:\n\t\tdata \u003d self.props.data\n\t\trow_data \u003d []\n\t\tfor i,j in enumerate(data):\n\t\t\tvalue \u003d j[\"value\"]\n\t\t\tif i \u003d\u003d 0:\n\t\t\t\theader \u003d [item for item in value] \t\n\t\t\trow \u003d [value[item][\"value\"] for item in value]\n\t\t\trow_data.append(row) \n\t\t\n\t\talarms_data \u003d system.dataset.toDataSet(header,row_data)\n\t\thtml_data \u003d system.dataset.dataSetToHTML(1, alarms_data, \"RealTimeAlarms\")\n\t\tsystem.perspective.download(\"myExport.html\",html_data)\n\t\tself.custom.run_export \u003d False" + } + }, + "custom.severity_filters": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d {}\n\tseverity_filters \u003d self.custom.severity_filters\n\tpayload[\"severity_filters\"] \u003d severity_filters\n\tsystem.perspective.sendMessage(\"button-severity\", payload \u003d payload, scope \u003d \"page\")" + } + }, + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": false, + "script": "\t\n\t\n\tempty_row \u003d row_builder.build_row(DisplayPath \u003d \"\",\n\tDuration \u003d \"\", Severity \u003d \"\",\n\tTimestamp \u003d \"\", AlarmId \u003d \"\",\n\tSource \u003d \"\", StyleClass \u003d {\"classes\":\"Alarms-Styles/Diagnostic\"})\n\tno_filter \u003d False\n\tseverity_filters \u003d self.custom.severity_filters\n\talarm_states \u003d alarms.alarm_filters.docked_alarm_table()\n\t\n\tif severity_filters[0] \u003d\u003d \"off\" and severity_filters[1] \u003d\u003d \"off\" and severity_filters[2] \u003d\u003d \"off\" and severity_filters[3] \u003d\u003d \"off\" and severity_filters[4] \u003d\u003d \"off\":\n\t\tno_filter \u003d True\n\t\n\tif self.custom.run_update and system.tag.exists(\"System/aws_data\"):\n\t\t\n\t\t\n\t\ttags_to_read \u003d system.tag.readBlocking([\"System/aws_data\",\"Configuration/DetailedViews\"])\n\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\tdetailed_view_decoded \u003d system.util.jsonDecode(tags_to_read[1].value)\n\t\tdevice_list \u003d detailed_view_decoded.get(self.custom.device,[])\n\t\tif len(decode_alarm_data) \u003e 0:\n\t\t\talt_colour \u003d self.session.custom.colours.colour_impaired\n\t\t\talarms_data \u003d alarms.alarm_tables.get_alarm_table(decode_alarm_data, severity_filters, no_filter, device_list, alarm_states, alt_colour)\t\t\n\t\t\t\n\t\t\tif len(alarms_data)\u003e0:\n\t\t\t\tself.props.data \u003d alarms_data\n\t\t\t\n\t\t\telse:\n\t\t\t\tself.props.data \u003d [empty_row]\n\t\telse:\n\t\t\tself.props.data \u003d [empty_row]\n\t\t\t\t\n\t\t\t" + } + }, + "props.selection.data": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d self.props.selection.data\n\tsystem.perspective.sendMessage(\"alarms-to-shelve\", payload \u003d payload, scope \u003d \"view\")" + } + } + }, + "props": { + "cells": { + "allowEditOn": "single-click" + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SourceId", + "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": "Message", + "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 HH:mm:ss", + "editable": false, + "field": "Timestamp", + "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": "Duration", + "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": "VendorId", + "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": "AlarmId", + "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": "" + } + ], + "data": [ + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "Duration": { + "value": "97h:57m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Estop activated" + }, + "Priority": { + "value": "4. High" + }, + "SourceId": { + "value": "PLC03 / 30 / S0102" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233996773 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "Duration": { + "value": "97h:57m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Estop activated" + }, + "Priority": { + "value": "4. High" + }, + "SourceId": { + "value": "PLC03 / 10 / S0101" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233996773 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "Duration": { + "value": "97h:57m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Estop activated" + }, + "Priority": { + "value": "4. High" + }, + "SourceId": { + "value": "PLC03 / S01 / K0041" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233996973 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "Duration": { + "value": "98h:40m:48s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Fuse tripped" + }, + "Priority": { + "value": "4. High" + }, + "SourceId": { + "value": "PLC03 / S01 / F0262" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674231386681 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "Duration": { + "value": "113h:4m:53s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Too many MultiReads in interval at verification scan" + }, + "Priority": { + "value": "3. Medium" + }, + "SourceId": { + "value": "PLC03 / General" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674179541965 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "Duration": { + "value": "10h:36m:12s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Too many NoReads in interval at verification scan" + }, + "Priority": { + "value": "3. Medium" + }, + "SourceId": { + "value": "PLC02 / General" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674548462720 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "Duration": { + "value": "97h:57m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Error" + }, + "Priority": { + "value": "3. Medium" + }, + "SourceId": { + "value": "PLC03 / ZM1" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233996463 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "Duration": { + "value": "97h:57m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Error" + }, + "Priority": { + "value": "3. Medium" + }, + "SourceId": { + "value": "PLC03 / ZM2" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233996404 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:1m:9s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / L3" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674554165092 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "98h:39m:12s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Medium speed mode activation" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / MHE" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674231482352 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:3m:47s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Reset buton" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC01 / P1 / S0033" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674554007223 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 60 / M0011" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997159 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 60 / M0012" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997159 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "8h:33m:21s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC02 / P1 / S0032" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674555833991 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 50 / M0041" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997130 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 50 / M0042" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997130 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:1m:9s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / I3_2" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674554165092 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "198h:55m:56s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / P2 / S0012" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1673870478869 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:35m:12s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / L2" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674552122041 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:3m:49s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC01 / P1 / S0032" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674554005464 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "11h:29m:21s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Received telegram is invalid" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC01 / General" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674545273550 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 60 / M0022" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997191 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 60 / M0021" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997191 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "10h:0m:42s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / I3_1" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674550592036 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "98h:31m:6s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Reset buton" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / P1 / S0033" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674231968042 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:35m:12s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / L1" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674552122041 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 50 / M0032" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997135 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "97h:57m:17s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Undervoltage" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / 50 / M0031" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674233997135 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "212h:36m:18s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC01 / P2 / S0012" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1673821256850 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "8h:33m:13s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Reset buton" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC02 / P1 / S0033" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674555841111 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "9h:1m:9s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Sleep mode activated" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC09 / L4" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674554165092 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "225h:32m:20s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC02 / P2 / S0012" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1673774694508 + } + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "Duration": { + "value": "98h:31m:5s" + }, + "Expiration": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 0 + } + }, + "Message": { + "value": "Stop button" + }, + "Priority": { + "value": "1. Diagnostic" + }, + "SourceId": { + "value": "PLC03 / P1 / S0032" + }, + "State": { + "value": "Active" + }, + "Timestamp": { + "value": { + "$": [ + "ts", + 192, + 1674586633866 + ], + "$ts": 1674231969209 + } + } + } + } + ], + "headerGroups": [ + [ + { + "align": "center", + "justify": "center", + "span": 1, + "style": { + "classes": "" + }, + "title": "DisplayPath" + } + ] + ], + "headerStyle": { + "classes": "Background-Styles/Controller" + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "color": "#FFFF09" + } + }, + "selection": { + "data": [ + { + "Duration": "97h:57m:18s", + "Expiration": "Thu Jan 01 1970 01:00:00 GMT+0100 (Greenwich Mean Time)", + "Message": "Estop activated", + "Priority": "4. High", + "SourceId": "PLC03 / 30 / S0102", + "Timestamp": "Fri Jan 20 2023 16:59:56 GMT+0000 (Greenwich Mean Time)" + } + ], + "mode": "multiple interval", + "selectedColumn": "SourceId", + "selectedRow": 0 + }, + "virtualized": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "severity-filters", + "pageScope": true, + "script": "\tcritical \u003d payload.get(\"critical\")\n\tif critical \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[4] \u003d 4\n\tif critical \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[4] \u003d \"off\"\n\t\n\thigh \u003d payload.get(\"high\")\n\tif high \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[3] \u003d 3\n\tif high \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[3] \u003d \"off\"\n\t\n\tmedium \u003d payload.get(\"medium\")\n\tif medium \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[2] \u003d 2\n\tif medium \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[2] \u003d \"off\"\n\t\n\tlow \u003d payload.get(\"low\")\n\tif low \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[1] \u003d 1\n\tif low \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[1] \u003d \"off\"\n\t\n\tdiagnostic \u003d payload.get(\"diagnostic\")\n\tif diagnostic \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[0] \u003d 0\n\tif diagnostic \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[0] \u003d \"off\"", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-table", + "pageScope": true, + "script": "\t# implement your handler here\n\tupdate \u003d payload[\"update\"]\n\tself.custom.run_update \u003d update", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "run-export", + "pageScope": true, + "script": "\t# implement your handler here\n\texport \u003d payload[\"export\"]\n\tself.custom.run_export \u003d export", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tseverity_filters \u003d self.custom.severity_filters\n\tseverity_filters[0] \u003d \"off\"\n\tseverity_filters[1] \u003d \"off\"\n\tseverity_filters[2] \u003d \"off\"\n\tseverity_filters[3] \u003d \"off\"\n\tseverity_filters[4] \u003d \"off\"", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json new file mode 100644 index 0000000..4414a6f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "520ca9154983ebd5e278483cb1f1ad256993cf1f3e781a27554bff0679845a8c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png new file mode 100644 index 0000000..f250b7e Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json new file mode 100644 index 0000000..4a97e9a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json @@ -0,0 +1,2897 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "15.8px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontWeight": "bold", + "text": "value", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "Filter by Date/Time" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "Start" + }, + "type": "ia.display.label" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\timport datetime\n\t\t\n\ttime_now \u003d datetime.datetime.now()\n\tself.props.value \u003d time_now - datetime.timedelta(hours \u003d 1)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartTime" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "propConfig": { + "props.maxDate": { + "binding": { + "config": { + "path": "../EndTime.props.value" + }, + "type": "property" + } + }, + "props.minDate": { + "binding": { + "config": { + "expression": "addWeeks({../EndTime.props.value},-2)" + }, + "type": "expr" + } + } + }, + "props": { + "formattedValue": "Apr 19, 2022 10:28 AM", + "value": { + "$": [ + "ts", + 192, + 1650367709276 + ], + "$ts": 1650364109276 + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "End" + }, + "type": "ia.display.label" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\timport datetime\n\t\n\ttime_now \u003d datetime.datetime.now()\n\tself.props.value \u003d time_now" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EndTime" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "formattedValue": "Apr 19, 2022 11:28 AM", + "value": { + "$": [ + "ts", + 192, + 1650367709276 + ], + "$ts": 1650367709276 + } + }, + "type": "ia.input.date-time-input" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid", + "borderWidth": "0.5px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "textAlign": "left", + "textIndent": "10px" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontWeight": "bold", + "text": "value", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "Filter by Device" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tdevice \u003d self.props.value\n\tpayload[\"device\"] \u003d device\n\tsystem.perspective.sendMessage(\"device-filter\", payload \u003d payload, scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + }, + "system": { + "onStartup": { + "config": { + "script": "\tdevices \u003d system.tag.readBlocking([\"Configuration/DetailedViews\"])\n\tdevices \u003d devices[0].value\n\tdevices_decoded \u003d system.util.jsonDecode(devices)\n\tdevice_list \u003d []\n\tno_device \u003d {}\n\tno_device[\"value\"]\u003d\"\"\n\tno_device[\"label\"]\u003d\"None\"\n\tdevice_list.append(no_device)\n\tfor i in devices_decoded:\n\t\tdevice_dict \u003d{}\n\t\tif len(devices_decoded[i]) \u003d\u003d 1:\n\t\t\tdevice_dict[\"value\"] \u003d i\n\t\t\tdevice_dict[\"label\"]\u003d i\n\t\t\tdevice_list.append(device_dict)\n\t\telse:\n\t\t\titems \u003d devices_decoded[i]\n\t\t\tfor item in items:\n\t\t\t\tdevice_dict \u003d{}\n\t\t\t\tdevice_dict[\"value\"] \u003d item\n\t\t\t\tdevice_dict[\"label\"]\u003d item\n\t\t\t\tdevice_list.append(device_dict)\n\t\t\t\t\n\tself.props.options \u003d device_list\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "options": [ + { + "label": "None", + "value": "" + }, + { + "label": "PLC03", + "value": "PLC03" + }, + { + "label": "PLC25", + "value": "PLC25" + }, + { + "label": "PLC47", + "value": "PLC47" + }, + { + "label": "PLC97", + "value": "PLC97" + }, + { + "label": "PLC69", + "value": "PLC69" + }, + { + "label": "PLC26", + "value": "PLC26" + }, + { + "label": "PLC48", + "value": "PLC48" + }, + { + "label": "PLC01", + "value": "PLC01" + }, + { + "label": "PLC23", + "value": "PLC23" + }, + { + "label": "PLC02", + "value": "PLC02" + }, + { + "label": "PLC07", + "value": "PLC07" + }, + { + "label": "PLC29", + "value": "PLC29" + }, + { + "label": "PLC08", + "value": "PLC08" + }, + { + "label": "PLC27", + "value": "PLC27" + }, + { + "label": "PLC49", + "value": "PLC49" + }, + { + "label": "PLC06", + "value": "PLC06" + }, + { + "label": "PLC28", + "value": "PLC28" + }, + { + "label": "PLC96", + "value": "PLC96" + }, + { + "label": "PLC40", + "value": "PLC40" + }, + { + "label": "PLC60", + "value": "PLC60" + }, + { + "label": "SLAM302", + "value": "SLAM302" + }, + { + "label": "PLC21", + "value": "PLC21" + }, + { + "label": "PLC43", + "value": "PLC43" + }, + { + "label": "PLC65", + "value": "PLC65" + }, + { + "label": "SLAM306", + "value": "SLAM306" + }, + { + "label": "PLC22", + "value": "PLC22" + }, + { + "label": "PLC66", + "value": "PLC66" + }, + { + "label": "SLAM307", + "value": "SLAM307" + }, + { + "label": "PLC41", + "value": "PLC41" + }, + { + "label": "PLC1000", + "value": "PLC1000" + }, + { + "label": "PLC20", + "value": "PLC20" + }, + { + "label": "PLC42", + "value": "PLC42" + }, + { + "label": "PLC64", + "value": "PLC64" + }, + { + "label": "SLAM304", + "value": "SLAM304" + }, + { + "label": "MAN2_PLC99", + "value": "MAN2_PLC99" + }, + { + "label": "PLC23-1", + "value": "PLC23-1" + }, + { + "label": "PLC09-2", + "value": "PLC09-2" + }, + { + "label": "PLC1000-1", + "value": "PLC1000-1" + }, + { + "label": "PLC09", + "value": "PLC09" + }, + { + "label": "PLC99", + "value": "PLC99" + }, + { + "label": "PLC14", + "value": "PLC14" + }, + { + "label": "ARSAW1401", + "value": "ARSAW1401" + }, + { + "label": "ARSAW1402", + "value": "ARSAW1402" + }, + { + "label": "ARSAW1403", + "value": "ARSAW1403" + }, + { + "label": "ARSAW1404", + "value": "ARSAW1404" + }, + { + "label": "ARSAW1405", + "value": "ARSAW1405" + }, + { + "label": "ARSAW1406", + "value": "ARSAW1406" + }, + { + "label": "ARSAW1407", + "value": "ARSAW1407" + }, + { + "label": "ARSAW1408", + "value": "ARSAW1408" + }, + { + "label": "PLC15", + "value": "PLC15" + }, + { + "label": "ARSAW1501", + "value": "ARSAW1501" + }, + { + "label": "ARSAW1502", + "value": "ARSAW1502" + }, + { + "label": "ARSAW1503", + "value": "ARSAW1503" + }, + { + "label": "ARSAW1504", + "value": "ARSAW1504" + }, + { + "label": "ARSAW1505", + "value": "ARSAW1505" + }, + { + "label": "ARSAW1506", + "value": "ARSAW1506" + }, + { + "label": "ARSAW1507", + "value": "ARSAW1507" + }, + { + "label": "ARSAW1508", + "value": "ARSAW1508" + }, + { + "label": "PLC13", + "value": "PLC13" + }, + { + "label": "ARSAW1301", + "value": "ARSAW1301" + }, + { + "label": "ARSAW1302", + "value": "ARSAW1302" + }, + { + "label": "ARSAW1303", + "value": "ARSAW1303" + }, + { + "label": "ARSAW1304", + "value": "ARSAW1304" + }, + { + "label": "ARSAW1305", + "value": "ARSAW1305" + }, + { + "label": "ARSAW1306", + "value": "ARSAW1306" + }, + { + "label": "ARSAW1307", + "value": "ARSAW1307" + }, + { + "label": "ARSAW1308", + "value": "ARSAW1308" + }, + { + "label": "PLC16", + "value": "PLC16" + }, + { + "label": "ARSAW1601", + "value": "ARSAW1601" + }, + { + "label": "ARSAW1602", + "value": "ARSAW1602" + }, + { + "label": "ARSAW1603", + "value": "ARSAW1603" + }, + { + "label": "ARSAW1604", + "value": "ARSAW1604" + }, + { + "label": "ARSAW1605", + "value": "ARSAW1605" + }, + { + "label": "ARSAW1606", + "value": "ARSAW1606" + }, + { + "label": "ARSAW1607", + "value": "ARSAW1607" + }, + { + "label": "ARSAW1608", + "value": "ARSAW1608" + }, + { + "label": "PLC51", + "value": "PLC51" + }, + { + "label": "SLAM305", + "value": "SLAM305" + }, + { + "label": "PLC70", + "value": "PLC70" + }, + { + "label": "PLC71", + "value": "PLC71" + }, + { + "label": "RWC4", + "value": "RWC4" + }, + { + "label": "PLC71", + "value": "PLC71" + }, + { + "label": "PLC70", + "value": "PLC70" + }, + { + "label": "RWC4", + "value": "RWC4" + }, + { + "label": "MAN2_PLC96", + "value": "MAN2_PLC96" + }, + { + "label": "PLC32", + "value": "PLC32" + }, + { + "label": "PLC30", + "value": "PLC30" + }, + { + "label": "SLAM301", + "value": "SLAM301" + }, + { + "label": "PLC52", + "value": "PLC52" + }, + { + "label": "MAN2_PLC97", + "value": "MAN2_PLC97" + }, + { + "label": "PLC31", + "value": "PLC31" + }, + { + "label": "SLAM303", + "value": "SLAM303" + }, + { + "label": "PLC80", + "value": "PLC80" + }, + { + "label": "SLAM401", + "value": "SLAM401" + }, + { + "label": "SLAM402", + "value": "SLAM402" + } + ], + "value": "None" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "device-filter-reset", + "pageScope": true, + "script": "\t# implement your handler here\n\tdevice_selection \u003d payload[\"device\"]\n\tself.props.value \u003d device_selection", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid", + "borderWidth": "0.5px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "props": { + "style": { + "textAlign": "left", + "textIndent": "10px" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontWeight": "bold", + "text": "value", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "Filter by Severity" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Critical", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Critical" + }, + { + "input": 0, + "output": "Alarms-Styles/NoAlarm-Black" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#FFFFFF", + "path": "material/error" + }, + "position": "top" + }, + "style": {}, + "text": "Critical" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "High", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/High" + }, + { + "input": 0, + "output": "Alarms-Styles/NoAlarm-Black" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/priority_high" + }, + "position": "top" + }, + "style": {}, + "text": "High" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Medium", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Medium" + }, + { + "input": 0, + "output": "Alarms-Styles/NoAlarm-Black" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/priority_high" + }, + "position": "top" + }, + "style": {}, + "text": "Medium" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "7px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Low", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Low" + }, + { + "input": 0, + "output": "Alarms-Styles/NoAlarm-Black" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/low_priority" + }, + "position": "top" + }, + "style": {}, + "text": "Low" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Diagnostic", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.Severity\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 0, + "output": "Alarms-Styles/NoAlarm-Black" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/warning" + }, + "position": "top" + }, + "style": {}, + "text": "Diagnostic" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\t# implement your handler here\n\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "type": "ia.container.flex" + } + ], + "custom": { + "SeverityFilter": "value" + }, + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid", + "borderWidth": "0.5px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "200px", + "grow": 1, + "shrink": 10 + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontWeight": "bold", + "text": "value", + "textAlign": "left", + "textIndent": "10px" + }, + "text": "Reset Filters" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "5px", + "grow": 1 + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Critical", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload1 \u003d {}\n\tpayload2 \u003d{}\n\tpayload3 \u003d{}\n\tpayload1[\"severity\"] \u003d \"\"\n\tpayload2[\"device\"] \u003d \"None\"\n\tpayload3[\"device\"] \u003d \"\"\n\tsystem.perspective.sendMessage(\"severity-filter\", payload \u003d payload1 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"button-severity-indicator\", payload \u003d payload1 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"device-filter-reset\", payload \u003d payload2 , scope \u003d \"page\")\n\tsystem.perspective.sendMessage(\"device-filter\", payload \u003d payload3 , scope \u003d \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "icon": { + "color": "#FFFFFF", + "path": "material/clear" + }, + "position": "top" + }, + "style": { + "classes": "Alarms-Styles/NoAlarm-Black" + }, + "text": "Reset Filters" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "High", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.toggleDock(\"Docked-West\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "icon": { + "path": "material/toggle_on" + }, + "position": "top" + }, + "style": { + "classes": "Alarms-Styles/NoAlarm-Black" + }, + "text": "Toggle Dock" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "High", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.parent.parent.parent.parent.getChild(\"Table\").props.data\n\tdataset \u003d system.dataset.dataSetToHTML(1,data,\"Test\")\n\tsystem.perspective.print(type(dataset))\n\tsystem.perspective.download(\"myExport.html\",dataset)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "icon": { + "path": "material/import_export" + }, + "position": "top" + }, + "style": { + "classes": "Alarms-Styles/NoAlarm-Black" + }, + "text": "Export" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "5px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "36px" + }, + "type": "ia.display.label" + } + ], + "custom": { + "SeverityFilter": "value" + }, + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid", + "borderWidth": "0.5px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "300px", + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "15.8px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Historyfilters": { + "Acked": 2, + "AckedBy": "", + "Area": "", + "DeviceDescription": "", + "DeviceType": "", + "DisplayPath": "", + "Empty": 0, + "Interval": 0, + "LinkToOEEMP": "", + "LinkToPage": "", + "Name": "", + "PLC": "", + "Priority": 0, + "SubArea": "", + "TZ": "Europe/London", + "UDT": "" + }, + "export": "value", + "severityFilter": "" + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "1639px", + "grow": 1 + }, + "propConfig": { + "custom.Historyfilters.FC": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "Configuration/FC" + }, + "type": "tag" + } + }, + "custom.Historyfilters.StartDT": { + "binding": { + "config": { + "path": "../FlexContainer/FlexContainer/StartTime.props.value" + }, + "type": "property" + } + }, + "custom.Historyfilters.StopDT": { + "binding": { + "config": { + "path": "../FlexContainer/FlexContainer/EndTime.props.value" + }, + "type": "property" + } + }, + "custom.alarmHistory": { + "binding": { + "config": { + "parameters": { + "Ackd": "{this.custom.Historyfilters.Acked}", + "AckdBy": "{this.custom.Historyfilters.AckedBy}", + "Area": "{this.custom.Historyfilters.Area}", + "DeviceDescription": "{this.custom.Historyfilters.DeviceDescription}", + "DeviceType": "{this.custom.Historyfilters.DeviceType}", + "DisplayPath": "{this.custom.Historyfilters.DisplayPath}", + "Empty": "{this.custom.Historyfilters.Empty}", + "Finish": "{this.custom.Historyfilters.StopDT}", + "Interval": "{this.custom.Historyfilters.Interval}", + "LinkToOEEMP": "{this.custom.Historyfilters.LinkToOEEMP}", + "LinkToPage": "{this.custom.Historyfilters.LinkToPage}", + "Name": "{this.custom.Historyfilters.Name}", + "PLC": "{this.custom.Historyfilters.PLC}", + "Priority": "{this.custom.Historyfilters.Priority}", + "Start": "{this.custom.Historyfilters.StartDT}", + "SubArea": "{this.custom.Historyfilters.SubArea}", + "TZ": "{this.custom.Historyfilters.TZ}", + "UDT": "{this.custom.Historyfilters.UDT}", + "WHID": "{Configuration/FC}" + }, + "polling": { + "enabled": true, + "rate": "2" + }, + "queryPath": "StoredProcedures/GetHistoricalAlarms", + "returnFormat": "dataset" + }, + "type": "query" + } + }, + "custom.export": { + "onChange": { + "enabled": null, + "script": "\tdata \u003d self.props.data\n\tsystem.perspective.download(\"AlarmExport\", data)" + } + }, + "custom.severityFilter": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d {}\n\tseverity \u003d self.custom.severityFilter\n\tpayload[\"severity\"] \u003d severity\n\tsystem.perspective.sendMessage(\"button-severity-indicator\", payload\u003d payload, scope \u003d \"page\")" + } + }, + "props.data": { + "binding": { + "config": { + "path": "this.custom.alarmHistory" + }, + "type": "property" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "TimeStamp", + "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": "Duration", + "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": "Name", + "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": "Priority", + "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": "Acked", + "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": "UDT", + "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": "UID", + "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": "DeviceDescription", + "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": "DeviceType", + "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": "DisplayPath", + "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": "Area", + "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": "SubArea", + "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": "PLC", + "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": "MaintenanceTemplate", + "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": "LinkToPage", + "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": "LinkToBOM", + "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": "LinkToHelp", + "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": "LinkToOEEMP", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "headerGroups": [ + [] + ] + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "severity-filter", + "pageScope": true, + "script": "\tfilter \u003d payload[\"severity\"]\n\tself.custom.severityFilter \u003d filter\n\tself.props.filter.text \u003d filter\n\t", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "device-filter", + "pageScope": true, + "script": "\t# implement your handler here\n\tdevice\u003d payload[\"device\"]\n\tself.custom.Historyfilters.PLC \u003d device", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "Background-Styles/Main-Background" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/resource.json new file mode 100644 index 0000000..c487a57 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "459f379fa49e4869f45f68106e03cae8c423a9fbeb86f34ca4a9685e4f8922dc" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/thumbnail.png new file mode 100644 index 0000000..f1f480b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json new file mode 100644 index 0000000..b74e8f6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json @@ -0,0 +1,4781 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "alarms", + "pageid": "alarms/ActiveAlarms", + "start_time": { + "$": [ + "ts", + 192, + 1748425447154 + ], + "$ts": 1748425447154 + } + } + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpriority \u003d \u0027critical\u0027\n\t# Copy and toggle the filter\n\tpriorities \u003d dict(self.parent.custom.priorities)\n\tpriorities[priority] \u003d not priorities.get(priority, False)\n\tself.parent.custom.priorities \u003d priorities\n\t\n\tself.custom.background_on \u003d \"true\" if priorities[priority] else \"false\"\n\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_4" + }, + "position": { + "basis": "125px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"true\",1,0)" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Critical" + }, + { + "input": 0, + "output": "Buttons/PB_1" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#FFFFFF", + "path": "material/error" + } + }, + "style": { + "margin": 15 + }, + "text": "Critical" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tif severity \u003d\u003d \"false\":\n\t\tbackground \u003d \"false\"\n\telse:\n\t\tbackground \u003d \"true\"\n\tself.custom.background_on \u003d background\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "custom": { + "Severity": "High", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpriority \u003d \u0027high\u0027\n\t# Copy and toggle the filter\n\tpriorities \u003d dict(self.parent.custom.priorities)\n\tpriorities[priority] \u003d not priorities.get(priority, False)\n\tself.parent.custom.priorities \u003d priorities\n\t\n\tself.custom.background_on \u003d \"true\" if priorities[priority] else \"false\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"false\",0,\r\nif({session.custom.colours.colour_impaired},2,1))" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "" + }, + { + "input": 1, + "output": "Alarms-Styles/High" + }, + { + "input": 2, + "output": "Alarms-Styles/Alt-Colours/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/priority_high" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "High" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tif severity \u003d\u003d \"false\":\n\t\tbackground \u003d \"false\"\n\telse:\n\t\tbackground \u003d \"true\"\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Medium", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpriority \u003d \u0027medium\u0027\n\t# Copy and toggle the filter\n\tpriorities \u003d dict(self.parent.custom.priorities)\n\tpriorities[priority] \u003d not priorities.get(priority, False)\n\tself.parent.custom.priorities \u003d priorities\n\t\n\tself.custom.background_on \u003d \"true\" if priorities[priority] else \"false\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"false\",0,\r\nif({session.custom.colours.colour_impaired},2,1))" + }, + "transforms": [ + { + "fallback": "Buttons/PB_1", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "" + }, + { + "input": 1, + "output": "Alarms-Styles/Medium" + }, + { + "input": 2, + "output": "Alarms-Styles/Alt-Colours/Medium" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/priority_high" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Medium" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tif severity \u003d\u003d \"false\":\n\t\tbackground \u003d \"false\"\n\telse:\n\t\tbackground \u003d \"true\"\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Low", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpriority \u003d \u0027low\u0027\n\t# Copy and toggle the filter\n\tpriorities \u003d dict(self.parent.custom.priorities)\n\tpriorities[priority] \u003d not priorities.get(priority, False)\n\tself.parent.custom.priorities \u003d priorities\n\t\n\tself.custom.background_on \u003d \"true\" if priorities[priority] else \"false\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_2" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"false\",0,\r\nif({session.custom.colours.colour_impaired},2,1))" + }, + "transforms": [ + { + "fallback": "Buttons/PB_1", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "" + }, + { + "input": 1, + "output": "Alarms-Styles/Low" + }, + { + "input": 2, + "output": "Alarms-Styles/Alt-Colours/Low" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/low_priority" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Low" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tif severity \u003d\u003d \"false\":\n\t\tbackground \u003d \"false\"\n\telse:\n\t\tbackground \u003d \"true\"\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpriority \u003d \u0027diagnostic\u0027\n\n\tpriorities \u003d dict(self.parent.custom.priorities)\n\tpriorities[priority] \u003d not priorities.get(priority, False)\n\tself.parent.custom.priorities \u003d priorities\n\t\n\tself.custom.background_on \u003d \"true\" if priorities[priority] else \"false\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_3" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({this.custom.background_on}\u003d\"false\",0,\r\nif({session.custom.colours.colour_impaired},2,1))" + }, + "transforms": [ + { + "fallback": "Buttons/PB_1", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "" + }, + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Alt-Colours/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/warning" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Diagnostic" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-filters", + "pageScope": true, + "script": "\t# implement your handler here\n\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tif severity \u003d\u003d \"false\":\n\t\tbackground \u003d \"false\"\n\telse:\n\t\tbackground \u003d \"true\"\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + } + ], + "custom": { + "priorities": { + "diagnostic": false, + "high": false, + "low": false, + "medium": false + } + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.priorities \u003d {\n\t \"diagnostic\": False,\n\t \"low\": False,\n\t \"medium\": False,\n\t \"high\": False,\n\t}" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "700px", + "shrink": 0 + }, + "props": { + "style": { + "padding": 0 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "Critical", + "background_on": "false" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tfilter_on \u003d \"false\"\n\tpayload[\"reset\"] \u003d filter_on\n\tsystem.perspective.sendMessage(\"reset-filters\", payload \u003dpayload, scope \u003d \"page\")\n\tdefault_priorities \u003d {\n\t \"diagnostic\": False,\n\t \"low\": False,\n\t \"medium\": False,\n\t \"high\": False,\n\t \"critical\": False\n\t}\n\tself.parent.parent.parent.getChild(\"FlexContainer_0\").getChild(\"Table\").props.filter.text \u003d \"\"\n\tself.parent.parent.getChild(\"FlexContainer\").custom.priorities \u003d default_priorities" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/clear" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Reset" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "Severity": "High", + "background_on": "true", + "update_on": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfrom datetime import datetime\n\ttry:\n\t # Get table data\n\t data \u003d self.parent.parent.parent.getChild(\"FlexContainer_0\").getChild(\"Table\").props.data\n\t \n\t column_order \u003d [\n\t \"ID\",\n\t \"StartTimestamp\", \n\t \"Duration\",\n\t \"Priority\",\n\t \"Location\",\n\t \"Description\",\n\t \"Tag\"\n\t ]\n\t\n\t # CSV header\n\t csv_content \u003d \",\".join(column_order) + \"\\n\"\n\t \n\t def unwrap(v):\n\t\t\tif hasattr(v, \u0027value\u0027):\n\t\t\t\treturn str(v.value)\n\t \t\n\t\t\treturn v\n\t \n\t if data and len(data) \u003e 0:\n\t for item in data:\n\t row_data \u003d []\n\t \n\t for col in column_order:\n\t # Look for the column in the current item\n\t if col in item:\n\t cell \u003d item[col]\n\t # Extract the value from the nested structure\n\t if isinstance(cell, dict) and \"value\" in cell:\n\t raw_value \u003d cell[\"value\"]\n\t else:\n\t raw_value \u003d cell\n\t else:\n\t raw_value \u003d \"\"\n\t \n\t # Process and clean the value\n\t processed_value \u003d unwrap(raw_value).replace(\",\", \";\")\n\t row_data.append(processed_value)\n\t \n\t csv_content +\u003d \",\".join(row_data) + \"\\n\"\n\t else:\n\t csv_content +\u003d \"No alarms in current view\\n\"\n\t\n\texcept Exception as e:\n\t system.perspective.print(\"Export Error: \" + str(e))\n\t csv_content \u003d \"Export failed\\n\"\n\t\n\tcsv_bytes \u003d csv_content.encode(\"utf-8\")\n\tsystem.perspective.download(\"active_alarms.csv\", csv_bytes) \n\t \n\t \n\t \n\t\n#\t if data and len(data) \u003e 0:\n#\t for row in data:\n#\t val \u003d row.get(\"value\", {})\n#\t row_data \u003d [\n#\t str(val.get(\"NumberID\", \"\")),\n#\t str(val.get(\"EventTimestamp\", \"\")),\n#\t str(val.get(\"Duration\", \"\")),\n#\t str(val.get(\"Priority\", \"\")),\n#\t str(val.get(\"Description\", \"\")),\n#\t str(val.get(\"Tag\", \"\"))\n#\t ]\n#\t\n#\t # Escape commas for CSV safety\n#\t row_data \u003d [field.replace(\",\", \";\") for field in row_data]\n#\t csv_content +\u003d \",\".join(row_data) + \"\\n\"\n#\t else:\n#\t csv_content +\u003d \"No alarms in current view\\n\"\n#\t\n#\texcept Exception as e:\n#\t system.perspective.print(\"Error during CSV export: \" + str(e))\n#\t csv_content \u003d \"Error exporting alarm data\\n\"\n#\t\n#\t# Convert to bytes and trigger download\n#\tcsv_bytes \u003d csv_content.encode(\u0027utf-8\u0027)\n#\tsystem.perspective.download(\"active_alarms.csv\", csv_bytes)\n " + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "path": "material/import_export" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Export" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "513px", + "shrink": 0 + }, + "props": { + "style": { + "padding": 0 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "props": { + "alignContent": "flex-start", + "style": { + "overflow": "visible" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\n\tmyData \u003d self.props.selection.data\n\n\talarms.alarm_click.handleClick(myData)\n\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "972.9px" + }, + "propConfig": { + "custom.priorities": { + "binding": { + "config": { + "path": ".../FlexContainer/FlexContainer.custom.priorities" + }, + "transforms": [ + { + "code": "\t\n\tpriority_to_number \u003d {\n\t \"critical\": 4,\n\t \"high\": 3,\n\t \"medium\": 2,\n\t \"low\": 1,\n\t \"diagnostic\": 0\n\t}\n\t\n\t\n\t# Collect enabled priorities\n\tenabled \u003d [str(priority_to_number[k]) for k, v in value.items() if v]\n\t\n\tresult \u003d \",\".join(enabled)\n\t\n\tif not result:\n\t\treturn \"\"\n\t\n\treturn result\n\t\n", + "type": "script" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priorityList": "{this.custom.priorities}" + }, + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d [col for col in ds.columnNames if col !\u003d \"EndTimestamp\"]\n\t\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "NumberID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Number (ID)" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Event Timestamp" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "string", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "ascending", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Active Alarms" + }, + "noFilterResults": { + "text": "No Active Alarms" + } + }, + "filter": { + "enabled": true, + "results": { + "enabled": true + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "480px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column", + "justify": "space-evenly" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfrom datetime import datetime\n\t\n\ttry:\n\t data \u003d self.parent.parent.getChild(\"FlexContainer_0\").getChild(\"AlarmsTable\").props.data\n\t\n\t column_order \u003d [\n\t \"FirstTimestamp\",\n\t \"LastTimestamp\", \n\t \"Count\",\n\t \"Duration\",\n\t \"Priority\",\n\t \"Location\",\n\t \"Description\",\n\t \"Tag\"\n\t ]\n\t\n\t csv_content \u003d \",\".join(column_order) + \"\\n\"\n\t \t\n\t def unwrap(v):\n\t\t\tif hasattr(v, \u0027value\u0027):\n\t\t\t\treturn str(v.value)\n\t \t\n\t\t\treturn v\n\t \t\n\t if data and len(data) \u003e 0:\n\t for item in data:\n\t row_data \u003d []\n\t \n\t for col in column_order:\n\t # Look for the column in the current item\n\t if col in item:\n\t cell \u003d item[col]\n\t # Extract the value from the nested structure\n\t if isinstance(cell, dict) and \"value\" in cell:\n\t raw_value \u003d cell[\"value\"]\n\t else:\n\t raw_value \u003d cell\n\t else:\n\t raw_value \u003d \"\"\n\t \n\t # Process and clean the value\n\t processed_value \u003d unwrap(raw_value).replace(\",\", \";\")\n\t row_data.append(processed_value)\n\t \n\t csv_content +\u003d \",\".join(row_data) + \"\\n\"\n\t else:\n\t csv_content +\u003d \"No alarms in current view\\n\"\n\t\n\texcept Exception as e:\n\t system.perspective.print(\"Export Error: \" + str(e))\n\t csv_content \u003d \"Export failed\\n\"\n\t\n\tcsv_bytes \u003d csv_content.encode(\"utf-8\")\n\tsystem.perspective.download(\"active_alarms.csv\", csv_bytes)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "path": "material/import_export" + } + }, + "primary": false, + "style": { + "margin": 15 + }, + "text": "Export" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "button-severity-indicator", + "pageScope": true, + "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"severity\"]\n\tbutton_severity \u003d self.custom.Severity\n\tif severity \u003d\u003d button_severity:\n\t\tbackground \u003d \"true\"\n\telse:\n\t\tbackground \u003d \"false\"\n\t\n\tself.custom.background_on \u003d background", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "70px" + }, + "props": { + "alignContent": "flex-start", + "style": { + "overflow": "visible" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\t\n\tmyData \u003d self.props.selection.data\n\n\talarms.alarm_click.handleClick(myData)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "AlarmsTable" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarmsWithCount" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data\n", + "type": "script" + } + ], + "type": "query" + } + }, + "props.editingCell": { + "onChange": { + "enabled": null, + "script": "\tall_alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\tshelved_alarms \u003d [alarm for alarm in all_alarms if alarm.isShelved()]\n\t\n\t# Build dataset for table\n\theaders \u003d [\u0027ID\u0027, \u0027StartTimestamp\u0027, \u0027EndTimestamp\u0027, \u0027Duration\u0027, \u0027Description\u0027, \u0027Priority\u0027, \u0027Tag\u0027, \u0027MCM\u0027]\n\tdata \u003d []\n\t\n\tfor alarm in shelved_alarms:\n\t # Calculate duration (time since shelved)\n\t if alarm.activeTime:\n\t duration_ms \u003d system.date.now().getTime() - alarm.activeTime.getTime()\n\t duration_seconds \u003d duration_ms / 1000\n\t hours \u003d int(duration_seconds / 3600)\n\t minutes \u003d int((duration_seconds % 3600) / 60)\n\t seconds \u003d int(duration_seconds % 60)\n\t duration \u003d \"%02d:%02d:%02d\" % (hours, minutes, seconds)\n\t else:\n\t duration \u003d \"00:00:00\"\n\t \n\t # Extract tag name from source\n\t tag_name \u003d alarm.source.split(\u0027/\u0027)[-1] if \u0027/\u0027 in alarm.source else alarm.source\n\t \n\t row \u003d [\n\t str(alarm.id) if hasattr(alarm, \u0027id\u0027) else \u0027\u0027,\n\t alarm.activeTime if alarm.activeTime else system.date.now(),\n\t None, # End timestamp (shelved alarms don\u0027t have end time yet)\n\t duration,\n\t alarm.displayPath if alarm.displayPath else alarm.source,\n\t alarm.priority.name if alarm.priority else \u0027Unknown\u0027,\n\t tag_name,\n\t \u0027System\u0027 # Adjust based on your source format\n\t ]\n\t data.append(row)\n\t\n\t# Create dataset and update the custom property\n\tdataset \u003d system.dataset.toDataSet(headers, data)\n\tself.custom.shelvedAlarmsData \u003d dataset" + } + }, + "props.selection": { + "persistent": true + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "FirstTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#FFFEFE", + "classes": "" + }, + "title": "First Timestamp" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "LastTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "Count", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "filter": { + "enabled": true, + "results": { + "enabled": true + } + }, + "pager": { + "activeOption": 5 + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "500px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Hit_List" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "justify": "space-evenly" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "custom": { + "SetFilter": true + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tif self.custom.SetFilter \u003d\u003d True:\n\t\tpayload[\"data\"] \u003d False\n\t\tself.custom.SetFilter \u003d False\n\t\t\n\t\n\telif self.custom.SetFilter \u003d\u003d False:\n\t\tpayload[\"data\"] \u003d True\n\t\tself.custom.SetFilter \u003d True\n\t\n\tsystem.perspective.sendMessage(\"show-historical-filters\", payload \u003d payload, scope \u003d \"page\")\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button", + "tooltip": { + "enabled": true, + "style": { + "background-color": "white", + "borderColor": "#000000", + "borderStyle": "solid", + "borderWidth": "1px", + "box-shadow": "5px 5px 5px grey", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "normal" + }, + "text": "Show Filters" + } + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "path": "material/filter_alt" + }, + "position": "center" + }, + "primary": false, + "style": { + "margin": 15, + "marginLeft": 20 + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "281px" + }, + "props": { + "style": { + "color": "#FF0000", + "margin-left": "20px" + }, + "text": "ALL TIMESTAMPS ARE IN UTC" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Show filters" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "100px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Period:" + }, + "type": "ia.display.label" + }, + { + "custom": { + "customTime": false, + "endDate": { + "$": [ + "ts", + 192, + 1750436956149 + ], + "$ts": 1750436956149 + }, + "startDate": { + "$": [ + "ts", + 192, + 1750436956149 + ], + "$ts": 1750435156149 + } + }, + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "props.value": { + "onChange": { + "enabled": null, + "script": "\n\tstart \u003d \"\"\n\tend \u003d \"\"\n\tnow \u003d system.date.now()\n\tpreviousDay \u003d system.date.addDays(now, -1)\n\tvalue \u003d currentValue.value \n\n\tif value \u003d\u003d \"custom\":\n\t\tself.custom.customTime \u003d True\n\t\treturn\n\telif value \u003d\u003d \"currentDay\":\n\t\tstart \u003d system.date.setTime(now, 0, 0, 0)\n\t\tend \u003d now\n\telif value \u003d\u003d \"morning\":\n\t\tstart \u003d system.date.setTime(now, 2, 30, 0)\n\t\tend \u003d system.date.setTime(now, 7, 30, 0)\n\telif value \u003d\u003d \"daylight\":\n\t\tstart \u003d system.date.setTime(now, 7, 30, 0)\n\t\tend \u003d system.date.setTime(now, 13, 0, 0)\n\telif value \u003d\u003d \"twilight\":\n\t\tstart \u003d system.date.setTime(now, 13, 0, 0)\n\t\tend \u003d now\n\telif value \u003d\u003d \"night\":\n\t\tstart \u003d system.date.setTime(previousDay, 18, 30, 0)\n\t\tend \u003d system.date.setTime(previousDay, 23, 30, 0)\n\telif value \u003d\u003d \"wrapDown\":\n\t\tstart \u003d system.date.setTime(previousDay, 23, 30, 0)\n\t\tend \u003d system.date.setTime(now, 2, 30, 0)\n\telif value \u003d\u003d \"currentShot\":\n\t\tstart \u003d system.date.setTime(now, 13, 0, 0)\n\t\tend \u003d now\n\telse:\n\t\tstart \u003d system.date.addMinutes(now, -int(value))\n\t\tend \u003d now\n\n\tself.custom.customTime \u003d False\n\tself.custom.startDate \u003d start\n\tself.custom.endDate \u003d end" + }, + "persistent": false + } + }, + "props": { + "options": [ + { + "label": "Past 30 Min", + "value": 30 + }, + { + "label": "Past Hour", + "value": 60 + }, + { + "label": "Past 2 Hour", + "value": 120 + }, + { + "label": "Past 4 Hour", + "value": 240 + }, + { + "label": "Past 8 Hour", + "value": 480 + }, + { + "label": "Current Day", + "value": "currentDay" + }, + { + "label": "Morning", + "value": "morning" + }, + { + "label": "Daylight", + "value": "daylight" + }, + { + "label": "Twilight", + "value": "twilight" + }, + { + "label": "Night", + "value": "night" + }, + { + "label": "Wrap Down", + "value": "wrapDown" + }, + { + "label": "Current Shot", + "value": "currentShot" + }, + { + "label": "Custom", + "value": "custom" + } + ], + "style": { + "margin": 15 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tself.props.value \u003d None", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Start Date" + }, + "type": "ia.display.label" + }, + { + "custom": { + "max_duration_days": 10 + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmessaging.message_handler.set_time_from_filters(self)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "DateTimeInput", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Dropdown.custom.customTime" + }, + "type": "property" + } + }, + "props.maxDate": { + "binding": { + "config": { + "expression": "now()" + }, + "type": "expr" + } + }, + "props.minDate": { + "access": "PUBLIC", + "binding": { + "config": { + "expression": "addDays(now(),-{this.custom.max_duration_days})" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "path": "../Dropdown.custom.startDate" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tmessaging.message_handler.set_time_from_filters(self)" + } + } + }, + "props": { + "formattedValue": "Jun 20, 2025 7:59 PM", + "style": { + "margin": 15 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tself.props.value \u003d None", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "89px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "End Date" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DateTimeInput_0" + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Dropdown.custom.customTime" + }, + "type": "property" + } + }, + "props.maxDate": { + "binding": { + "config": { + "expression": "now()" + }, + "enabled": false, + "type": "expr" + } + }, + "props.minDate": { + "binding": { + "config": { + "expression": "addDays(now(),-10)" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "path": "../Dropdown.custom.endDate" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tmessaging.message_handler.set_time_to_filters(self)" + }, + "persistent": true + } + }, + "props": { + "formattedValue": "Jun 20, 2025 8:29 PM", + "maxDate": { + "$": [ + "ts", + 192, + 1749542669794 + ], + "$ts": 1749715452000 + }, + "style": { + "margin": 15 + }, + "value": { + "$": [ + "ts", + 201, + 1750436956149 + ], + "$ts": 1750436956149 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tself.props.value \u003d None", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.date-time-input" + } + ], + "meta": { + "name": "Time" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Priority" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmessaging.message_handler.set_priority_filters(self)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "490px" + }, + "propConfig": { + "props.value": { + "persistent": false + } + }, + "props": { + "options": [ + { + "label": "Diagnostic", + "value": "diagnostic" + }, + { + "label": "Low", + "value": "low" + }, + { + "label": "Medium", + "value": "medium" + }, + { + "label": "High", + "value": "high" + }, + { + "label": "All", + "value": "" + } + ], + "style": { + "margin": 15 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tself.props.value \u003d None", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "Priority" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "type": "ia.container.flex" + } + ], + "custom": { + "ShowFilters": true + }, + "meta": { + "name": "Filters" + }, + "position": { + "basis": "180px", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "this.custom.ShowFilters" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid", + "borderWidth": "1px", + "box-shadow": "0 4px 20px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)", + "marginBottom": 10, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 10 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "show-historical-filters", + "pageScope": true, + "script": "\tshow \u003d payload[\"data\"]\n\tself.custom.ShowFilters \u003d show", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "custom": { + "max_duration": { + "$": [ + "ts", + 192, + 1748426336635 + ], + "$ts": 1747562336635 + }, + "priority_filters": "", + "time_from_filter": { + "$": [ + "ts", + 192, + 1754388338241 + ], + "$ts": 1750435156149 + }, + "time_to_filter": { + "$": [ + "ts", + 192, + 1754388338241 + ], + "$ts": 1750436956149 + } + }, + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\t\n\tmyData \u003d self.props.selection.data\n\n\talarms.alarm_click.handleClick(myData)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "1920px", + "grow": 1 + }, + "propConfig": { + "props.columns[1].filter.date.value": { + "binding": { + "config": { + "path": "this.custom.time_from_filter" + }, + "type": "property" + } + }, + "props.columns[2].filter.date.value": { + "binding": { + "config": { + "path": "this.custom.time_to_filter" + }, + "type": "property" + } + }, + "props.columns[2].filter.number.value": { + "binding": { + "config": { + "path": "this.custom.time_to_filter" + }, + "enabled": false, + "type": "property" + } + }, + "props.columns[5].filter.string.value": { + "binding": { + "config": { + "path": "this.custom.priority_filters" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "box-shadow": "0 4px 20px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)", + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "ID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "later than date time" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "EndTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "earlier than date time" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "End Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "enabled": true, + "filter": { + "enabled": true, + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + }, + "selection": { + "data": [ + { + "Description": "ULC1_3 - Communication Fault", + "Device": "ULC1_3", + "Duration": "19:00:33", + "EndTimestamp": null, + "FullTag": "System/MCM01/Conveyor/APF/ULC1_3/Alarms/Communication_Fault", + "ID": 12, + "Location": "MCM01", + "Priority": "High", + "StartTimestamp": "Mon Aug 04 2025 18:40:16 GMT+0400 (Georgia Standard Time)", + "Tag": "ULC1_3.HMI.Communication_Fault" + } + ], + "selectedColumn": "EndTimestamp", + "selectedRow": 0 + }, + "style": { + "margin": 20 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-first-request", + "pageScope": true, + "script": "\tdata \u003d payload[\"data\"]\n\tinitial_data \u003d payload[\"initial_data\"]\n\tself.props.data \u003d data\n\tself.custom.initial_data \u003d initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "\thistorical_data \u003d payload[\"data\"]\n\tself.props.data \u003d historical_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "load_initial_data", + "pageScope": true, + "script": "\trequest \u003d payload[\"data\"]\n\tsystem.perspective.print(\"initial message received\")\n\tif request \u003d\u003d True:\n\t\tself.props.data \u003d self.custom.initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tif reset \u003d\u003d \"reset\":\n\t\tself.props.data \u003d []\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Table" + }, + "position": { + "basis": "980px", + "grow": 1 + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "#\tdata \u003d payload[\"data\"]\n#\tself.getChild(\"Table\").props.data \u003d data", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "custom": { + "download_in_progress": true, + "enable_timeout": false, + "priority_filters": "", + "time_from_filter": { + "$": [ + "ts", + 192, + 1754388338241 + ], + "$ts": 1750435156149 + }, + "time_to_filter": { + "$": [ + "ts", + 192, + 1754388338241 + ], + "$ts": 1750436956149 + }, + "type_filters": null + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\n from datetime import datetime\n def format_date(value):\n\t\tif isinstance(value, (int, long)) and value \u003e 10000000:\n\t\t\ttimestamp \u003d system.date.fromMillis(value)\n\t\t\treturn system.date.format(timestamp, \"yyyy-MM-dd HH:mm:ss\")\n\t\t\t\n\t\t# If value is not a valid timestamp, return as-is\n\t\treturn str(value)\n \n try:\n\n # Get filtered data\n table \u003d self.parent.parent.getChild(\"Table\").getChild(\"Table\")\n filtered_data \u003d table.props.filter.results.data\n\n if not filtered_data or len(filtered_data) \u003d\u003d 0:\n system.perspective.print(\"No filtered data to export.\")\n return\n\n # Get correct column order from the table\u0027s column config\n column_order \u003d [col[\"field\"] for col in table.props.columns if \"field\" in col]\n\n csv_content \u003d \",\".join(column_order) + \"\\n\"\n\n # Build rows\n for row_dict in filtered_data:\n row \u003d []\n for col in column_order:\n raw_val \u003d row_dict.get(col, \"\")\n value \u003d format_date(raw_val)\n value \u003d value.replace(\",\", \";\") # CSV safety\n row.append(value)\n csv_content +\u003d \",\".join(row) + \"\\n\"\n\n # Export CSV\n csv_bytes \u003d csv_content.encode(\"utf-8\")\n system.perspective.download(\"filtered_alarms_history.csv\", csv_bytes)\n\n system.perspective.print(\"CSV export completed successfully. Exported %d records.\" % len(filtered_data))\n\n except Exception as e:\n system.perspective.print(\"Export failed: \" + str(e))" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Export", + "tooltip": { + "enabled": true, + "text": "Exports the data displayed in the table." + } + }, + "position": { + "basis": "120px", + "shrink": 0 + }, + "propConfig": { + "custom.disable": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.start_time}), False, secondsBetween({this.custom.start_time}, {this.custom.time_now}))" + }, + "transforms": [ + { + "code": "\tif value \u003e 60:\n\t\tself.custom.enable_timeout \u003d False\n\t\treturn False\n\telse:\n\t\treturn True", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.download_complete": { + "binding": { + "config": { + "path": "session.custom.downloads" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d True:\n\t\tself.custom.download_in_progress \u003d False", + "type": "script" + } + ], + "type": "property" + } + }, + "custom.priority_filters": { + "persistent": true + }, + "custom.start_time": { + "binding": { + "config": { + "expression": "{this.custom.enable_timeout}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d True:\n\t\treturn self.custom.time_now", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.time_from_filter": { + "persistent": true + }, + "custom.time_now": { + "binding": { + "config": { + "expression": "now()" + }, + "type": "expr" + } + }, + "custom.time_to_filter": { + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "!{this.custom.enable_timeout} || !{this.custom.download_in_progress} " + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "if(!{this.custom.enable_timeout}, \"Export\",\r\nif({this.custom.download_in_progress}, \"Exporting...\",\r\n\"Export\"))" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/import_export" + } + }, + "primary": false, + "style": { + "margin": 15, + "marginLeft": 20 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-message-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.message_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\taction \u003d payload[\"data\"]\n\tif action \u003d\u003d \"reset\":\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue\n\t\t", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "580px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Paginate" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "props": { + "justify": "space-evenly" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Grey-Background" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Historical_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "justify": "space-evenly" + }, + "type": "ia.container.flex" + } + ], + "custom": { + "shelvedAlarms": [] + }, + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\n\tif self.props.currentTabIndex !\u003d 0:\n\t\tpayload \u003d {}\n\t\tfilter_on \u003d \"false\"\n\t\tpayload[\"reset\"] \u003d filter_on\n\t\tsystem.perspective.sendMessage(\"reset-filters\", payload \u003dpayload, scope \u003d \"page\")\n\t\t\n\tif currentValue.value \u003d\u003d 1:\n\t shelved_info \u003d system.alarm.getShelvedPaths()\n\t alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\t \n\t tableData \u003d []\n\t \n\t for alarm in alarms:\n\t if alarm.isShelved() and not alarm.isAcked() and not alarm.isCleared():\n\t # Get alarm path as string\n\t alarm_path \u003d str(alarm.getSource())\n\t \n\t # Get active time\n\t activeData \u003d alarm.getActiveData()\n\t startTime \u003d activeData.getTimestamp() if activeData else None\n\t \n\t # Find shelved info for this alarm\n\t shelveEntry \u003d \"\"\n\t \n\t for shelved_item in shelved_info:\n\t shelved_str \u003d str(shelved_item)\n\t \n\t if alarm_path in shelved_str:\n\t # Extract the value part (after the first comma)\n\t if \",\" in shelved_str:\n\t start_idx \u003d shelved_str.find(\",\")\n\t shelveEntry \u003d shelved_str[start_idx + 1:].rstrip(\"}\")\n\t break\n\t \n\t # Parse shelved information\n\t expiration \u003d \"\"\n\t \n\t if shelveEntry:\n\t \n\t # Extract expiration (between \"expiration:\" and \",\")\n\t if \"expiration:\" in shelveEntry:\n\t exp_part \u003d shelveEntry.split(\"expiration:\")[1]\n\t if \",\" in exp_part:\n\t expiration \u003d exp_part.split(\",\")[0].strip()\n\t else:\n\t expiration \u003d exp_part.strip()\n\t \n\t tableData.append({\n\t \"name\": alarm.getName(),\n\t \"path\": alarm_path,\n\t \"activeTime\": system.date.format(system.date.fromMillis(startTime), \"yyyy-MM-dd HH:mm:ss\"),\n\t \"expirationTime\": expiration,\n\t \"priority\": str(alarm.getPriority())\n\t })\n\t \n\t self.custom.shelvedAlarms \u003d tableData\n\t \n\t\t\n\ttry:\n\t\tpageid \u003d self.view.custom.activityLogger.alt_pageid + \u0027/\u0027+ self.props.tabs[previousValue.value]\n\t\tpageid \u003d pageid.replace(\u0027 \u0027,\u0027\u0027)\n\t\tpayload \u003d activityLog.productMetrics.createActivityPayload(self.view, \u0027page\u0027, pageid, pageid)\n\t\tself.view.custom.activityLogger.start_time \u003d system.date.now()\n\t\tif payload:\n\t\t\tsystem.perspective.sendMessage(\u0027activityLogger-TabChanged\u0027, payload \u003d payload, scope \u003d \u0027page\u0027)\n\texcept:\n\t\tpass" + } + } + }, + "props": { + "contentStyle": { + "classes": "Background-Styles/Grey-Background" + }, + "menuType": "modern", + "style": { + "classes": "Background-Styles/Grey-Background" + }, + "tabSize": { + "width": 140 + }, + "tabStyle": { + "active": { + "backgroundColor": "#EEEEEE", + "borderLeftColor": "#7FFF00", + "borderLeftStyle": "solid", + "borderLeftWidth": 5, + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold", + "outlineStyle": "none", + "textDecoration": "underline" + }, + "inactive": { + "backgroundColor": "#D7D7D7", + "borderLeftColor": "#FFFFFF", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "color": "#969696", + "fontFamily": "Arial" + } + }, + "tabs": [ + "Active Alarms", + "Alarm Hit List", + "Historical" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "Background-Styles/Main-Background" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "activityLogger-TabChanged", + "pageScope": true, + "script": "\t# implement your handler here\n\tif payload:\n\t\tactivityLog.productMetrics.callActivityLoggerAPI(payload)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/resource.json new file mode 100644 index 0000000..d951bd1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "eec93c36f0b932178983c2c65b7c8a191a9bdab5ec256052a819c07ee9f3a370" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/thumbnail.png new file mode 100644 index 0000000..8fb4e8c Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/view.json new file mode 100644 index 0000000..0845b6f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/view.json @@ -0,0 +1,749 @@ +{ + "custom": {}, + "params": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconAlignment": "right", + "btnIconPrimary": "chevron_right", + "btnIconSecondary": "", + "btnTextPrimary": "Primary", + "btnTextSecondary": "Secondary", + "message": "Alert message goes here.", + "payload": { + "key": "The payload to return to the caller would go here. DLC 2021-09-23" + }, + "showCloseBtn": true, + "state": "info", + "title": "title" + }, + "propConfig": { + "params.btnActionClose": { + "paramDirection": "input", + "persistent": true + }, + "params.btnActionPrimary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnActionSecondary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconAlignment": { + "paramDirection": "inout" + }, + "params.btnIconPrimary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconSecondary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconSecondary_1": { + "paramDirection": "input", + "persistent": true + }, + "params.btnIconSecondary_2": { + "paramDirection": "input", + "persistent": true + }, + "params.btnIconSecondary_3": { + "paramDirection": "input", + "persistent": true + }, + "params.btnTextPrimary": { + "paramDirection": "inout" + }, + "params.btnTextSecondary": { + "paramDirection": "inout" + }, + "params.buttons.key": { + "paramDirection": "input", + "persistent": true + }, + "params.message": { + "paramDirection": "input", + "persistent": true + }, + "params.payload": { + "paramDirection": "input", + "persistent": true + }, + "params.showCloseBtn": { + "paramDirection": "input", + "persistent": true + }, + "params.state": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 224, + "width": 384 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "iconMain" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "warning", + "output": "#FFFF00" + }, + { + "input": "success", + "output": "#00CC00" + }, + { + "input": "error", + "output": "#FF8000" + }, + { + "input": "info", + "output": "#007EFC" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "material/info", + "inputType": "scalar", + "mappings": [ + { + "input": "warning", + "output": "material/warning" + }, + { + "input": "info", + "output": "material/info" + }, + { + "input": "error", + "output": "material/error" + }, + { + "input": "success", + "output": "material/check_circle" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "title" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{this.props.text}" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.style.color": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "var(--info)" + }, + { + "input": "success", + "output": "var(--success)" + }, + { + "input": "error", + "output": "var(--error)" + }, + { + "input": "warning", + "output": "var(--warning)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertTitle", + "color": "#FAFAFA" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "message" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.message" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertMessage" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "content" + }, + "position": { + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionClose\t\n\tsystem.perspective.sendMessage(messageType, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + }, + "onTouchStart": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionClose\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "iconClose" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.showCloseBtn" + }, + "type": "property" + } + } + }, + "props": { + "color": "#FAFAFA", + "path": "material/close", + "style": { + "classes": "Alerts/alertClose" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "body" + }, + "position": { + "basis": "150px", + "grow": 1, + "shrink": 0 + }, + "props": { + "alignItems": "flex-start", + "style": { + "classes": "Utilities/p-16" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionSecondary\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "actionSecondary" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.image.icon.path": { + "binding": { + "config": { + "expression": "\"material/\" + {view.params.btnIconSecondary}" + }, + "transforms": [ + { + "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.image.position": { + "binding": { + "config": { + "path": "view.params.btnIconAlignment" + }, + "type": "property" + } + }, + "props.image.style.fill": { + "binding": { + "config": { + "path": "view.params.state" + }, + "transforms": [ + { + "fallback": "#222222", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "#17599C" + }, + { + "input": "success", + "output": "#117539" + }, + { + "input": "warning", + "output": "#C26700" + }, + { + "input": "error", + "output": "#A62D19" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "Alerts/alertBtn2 Utilities/m-r-8 Utilities/p-rl-8", + "inputType": "scalar", + "mappings": [ + { + "input": "error", + "output": "Alerts/states/errorBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "warning", + "output": "Alerts/states/warningBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "info", + "output": "Alerts/states/infoBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "success", + "output": "Alerts/states/successBtn2 Utilities/m-r-8 Utilities/p-rl-8" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "{view.params.btnTextSecondary}" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 20, + "icon": {}, + "width": 20 + }, + "primary": false, + "style": { + "classes": "Alerts/alertButtonSecondary" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionPrimary\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")\n#\tsystem.perspective.print(\u0027sent message \"%s\" to session from primary button\u0027 % messageType)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "actionPrimary" + }, + "position": { + "basis": "102px", + "shrink": 0 + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "\"material/\" + {view.params.btnIconPrimary}" + }, + "transforms": [ + { + "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.image.position": { + "binding": { + "config": { + "path": "view.params.btnIconAlignment" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "Alerts/alertBtn1 Utilities/p-rl-8", + "inputType": "scalar", + "mappings": [ + { + "input": "error", + "output": "Alerts/states/errorBtn1 Utilities/p-rl-8" + }, + { + "input": "warning", + "output": "Alerts/states/warningBtn1 Utilities/p-rl-8" + }, + { + "input": "info", + "output": "Alerts/states/infoBtn1 Utilities/p-rl-8" + }, + { + "input": "success", + "output": "Alerts/states/successBtn1 Utilities/p-rl-8" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.btnTextPrimary" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "height": 20, + "icon": {}, + "width": 20 + }, + "style": { + "classes": "Alerts/alertButton" + }, + "textStyle": { + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + }, + { + "messageType": "logout", + "pageScope": false, + "script": "\tsystem.perspective.logout()", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "footer" + }, + "position": { + "basis": "56px", + "shrink": 0 + }, + "props": { + "justify": "flex-end", + "style": { + "backgroundColor": "var(--neutral-30)", + "borderTop": "1px solid var(--neutral-50)", + "classes": "Utilities/p-8" + } + }, + "type": "ia.container.flex" + } + ], + "events": { + "dom": { + "onFocus": { + "config": { + "script": "\tmessageType \u003d \u0027alertFocus\u0027\n\tsystem.perspective.sendMessage(messageType)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "dialog" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "Alerts/alertDefault", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "Alerts/states/info" + }, + { + "input": "warning", + "output": "Alerts/states/warning" + }, + { + "input": "error", + "output": "Alerts/states/error" + }, + { + "input": "success", + "output": "Alerts/states/success" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "maxHeight": "none" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/resource.json new file mode 100644 index 0000000..a38d5e6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "5c99f52206d24bf9c953abea1507affead8c7b07f9c564b2c99adf9a6ebdb66f" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/thumbnail.png new file mode 100644 index 0000000..51622d7 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/view.json new file mode 100644 index 0000000..b21b1a1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/view.json @@ -0,0 +1,479 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "width": 600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "48px" + }, + "props": { + "style": { + "fontSize": "24px", + "textAlign": "center" + }, + "text": "Swap Theme" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.props.theme" + }, + "type": "property" + } + } + }, + "props": { + "options": [ + { + "label": "Light", + "value": "light" + }, + { + "label": "Light (cool tint)", + "value": "light-cool" + }, + { + "label": "Light (warm tint)", + "value": "light-warm" + }, + { + "label": "Dark", + "value": "dark" + }, + { + "label": "Dark (cool tint)", + "value": "dark-cool" + }, + { + "label": "Dark (warm tint)", + "value": "dark-warm" + } + ], + "placeholder": { + "text": "" + }, + "search": { + "enabled": false + }, + "style": { + "classes": "Utilities/m-b-16" + } + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "40px" + }, + "props": { + "alignVertical": "bottom", + "style": { + "fontSize": "24px", + "textAlign": "center" + }, + "text": "Example Scripts" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\"warning\", \"This is a Warning!\", \"You have been warned.\", \"false\", \"Accept\", \"Cancel\", \"\", \"\", \"\", \"closePopup\", \"closePopup\", \"closePopup\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "warning script" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/warningBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Warning" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\"success\", \"You\u0027re So Successful\", \"Fantastic work. Really, just a job well done.\", \"true\", \"I know\", \"No\", \"tag_faces\", \"close\", \"\", \"closePopup\", \"closePopup\", \"closePopup\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "success script" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/successBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Success" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\"error\", \"I\u0027m Sorry, Dave.\", \"I\u0027m afraid I can\u0027t do that. I think you know what the problem is just as well as I do.\", \"true\", \"Disconnect Hal\", \"\", \"disc_full\", \"\", \"\", \"closePopup\", \"closePopup\", \"closePopup\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "error script" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/errorBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Error" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\"info\", \"Info Title\", \"Alert message goes here.\", \"true\", \"Continue\", \"Cancel\", \"\", \"\", \"\", \"closePopup\", \"closePopup\", \"closePopup\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "info script" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/infoBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Info" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "scripts" + }, + "position": { + "basis": "56px" + }, + "props": { + "alignItems": "center", + "style": { + "classes": "Utilities/m-b-16" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "48px" + }, + "props": { + "alignVertical": "bottom", + "style": { + "fontSize": "24px", + "textAlign": "center" + }, + "text": "Example Actions" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "alertWarning", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewParams": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconPrimary": "", + "btnTextPrimary": "Accept", + "btnTextSecondary": "Cancel", + "message": "You have been warned.", + "showCloseBtn": "false", + "state": "warning", + "title": "This is a Warning!" + }, + "viewPath": "Alerts/alert" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "warning action" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/warningBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Warning" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "alertSuccess", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewParams": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconPrimary": "tag_faces", + "btnIconSecondary": "close", + "btnTextPrimary": "I Know", + "btnTextSecondary": "No", + "message": "Fantastic work. Really, just a job well done.", + "state": "success", + "title": "You\u0027re So Successful" + }, + "viewPath": "Alerts/alert" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "success action" + }, + "position": { + "basis": "80px", + "grow": 1, + "shrink": 0 + }, + "props": { + "style": { + "classes": "Alerts/states/successBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Success" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "alertError", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewParams": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconPrimary": "disc_full", + "btnTextPrimary": "Disconnect Hal", + "btnTextSecondary": "", + "message": "I\u0027m afraid I can\u0027t do that. I think you know what the problem is just as well as I do. ", + "state": "error", + "title": "I\u0027m Sorry, Dave." + }, + "viewPath": "Alerts/alert" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "error action" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/errorBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Error" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "alertInfo", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewParams": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconPrimary": "", + "btnTextPrimary": "Continue", + "btnTextSecondary": "Cancel", + "state": "info", + "title": "Info Title" + }, + "viewPath": "Alerts/alert" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "info action" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "props": { + "style": { + "classes": "Alerts/states/infoBtn1 Utilities/m-r-8 Utilities/p-8" + }, + "text": "Info" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "actions" + }, + "position": { + "basis": "56px" + }, + "props": { + "alignItems": "center", + "style": { + "classes": "Utilities/m-b-16" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "info" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "props": { + "source": "Thank you for downloading this Ignition resource!\n\n## How to Use\nAlert popups may be called via a script or event action. The specified parameters drive their appearance and features.\n\n### Button Actions\nThe action performed when interacting with an alert button is determined by [component message handlers](https://docs.inductiveautomation.com/display/DOC80/Component+Message+Handlers). In this way, they are dynamic and extensible based on the parameters driving the alert. Add a message handler to the corresponding button to enable a new action onActionPerformed.", + "style": { + "backgroundColor": "var(--neutral-30)", + "borderRadius": "4px", + "fontSize": "0.875rem", + "marginTop": "1rem", + "padding": "1rem", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "alignContent": "flex-start", + "direction": "column", + "style": { + "margin": "0 auto", + "maxWidth": "600px", + "padding": "1rem" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/resource.json new file mode 100644 index 0000000..b20b2c6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c0337b0c48fb20d075184e05209bcab5aaaec17a9c0e13b1aa472412e3ebade3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/thumbnail.png new file mode 100644 index 0000000..2e434b8 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/view.json new file mode 100644 index 0000000..c87b827 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/view.json @@ -0,0 +1,175 @@ +{ + "custom": { + "activityLogger": { + "start_time": { + "$": [ + "ts", + 192, + 1709760479262 + ], + "$ts": 1709760479262 + } + }, + "show_alarms": false + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.logger.callLogger(self, \u0027page\u0027)\n\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "detailedView": "", + "plcTagPath": "" + }, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.alt_pageid": { + "binding": { + "config": { + "expression": "\"detailed_views/\"+ {view.params.detailedView}" + }, + "type": "expr" + } + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.show_alarms": { + "persistent": true + }, + "params.detailedView": { + "paramDirection": "input", + "persistent": true + }, + "params.plcTagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "320px", + "grow": 1 + }, + "propConfig": { + "props.params.PLCTagPath": { + "binding": { + "config": { + "path": "view.params.plcTagPath" + }, + "type": "property" + } + } + }, + "props": { + "path": "Alarm-Views/Docked-Alarm" + }, + "type": "ia.display.view" + } + ], + "custom": { + "key": "value" + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "130px", + "display": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "show-south-dock", + "pageScope": true, + "script": "\tshow \u003d payload[\"show_alarms\"]\n\tsystem.perspective.print(show)\n\tself.position.display \u003d show", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "320px", + "grow": 1 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "expression": "\"Detailed-Views/\"+ {view.params.detailedView}" + }, + "type": "expr" + } + } + }, + "type": "ia.display.view" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "id": "Docked-East", + "type": "close" + }, + "scope": "C", + "type": "dock" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json new file mode 100644 index 0000000..59c47bd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "03764a6a622bb36c9c637ac70d721389ce8d90ea42b60b06645a3c7cde89ab0b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png new file mode 100644 index 0000000..41fcd9e Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json new file mode 100644 index 0000000..67c6d2b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json @@ -0,0 +1,59 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "custom": { + "s3URI": "amzl/CGN9/images/CGN9_V2.svg" + }, + "meta": { + "name": "Image" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "this.custom.s3URI" + }, + "transforms": [ + { + "code": "\treturn AWS.s3.getPresignedURL(self, value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "altText": "none", + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent", + "style": { + "backgroundColor": "#EEEEEE" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json new file mode 100644 index 0000000..7b22ef5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "43a8db761f730e74784565018171c502b2978d65bb59aa48d786927f769e7a85" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png new file mode 100644 index 0000000..9a384ad Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json new file mode 100644 index 0000000..05f423e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json @@ -0,0 +1,87 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 182 + }, + "props": { + "style": { + "classes": "State-Styles/Background-Fill/State1" + }, + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 246 + }, + "props": { + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 49, + "width": 171, + "x": 174, + "y": 328 + }, + "props": { + "text": "Label" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tvalue \u003d 1\n\tsystem.tag.writeBlocking([\"PLC1000/Cmd/inReset\"],[value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 54, + "width": 174, + "x": 100, + "y": 516 + }, + "props": { + "text": "Reset" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/resource.json new file mode 100644 index 0000000..6198ab5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e75ce372e7f387ba717bedeca382e1283799976111ddb5e1497be2652ed06aa7" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/thumbnail.png new file mode 100644 index 0000000..26bb76d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/view.json new file mode 100644 index 0000000..e6ac614 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/view.json @@ -0,0 +1,113 @@ +{ + "custom": {}, + "params": { + "breakpoint": 500, + "params": {}, + "path": "Header/Header" + }, + "propConfig": { + "params.breakpoint": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 58, + "width": 512 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Large" + }, + "position": { + "size": "large" + }, + "propConfig": { + "props.params.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "size": "medium" + }, + "style": { + "backgroundColor": "#2B2B2B" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Small" + }, + "propConfig": { + "props.params.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "size": "small" + }, + "style": { + "backgroundColor": "#2B2B2B" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.breakpoint": { + "binding": { + "config": { + "path": "view.params.breakpoint" + }, + "type": "property" + } + } + }, + "type": "ia.container.breakpt" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/resource.json new file mode 100644 index 0000000..1edf925 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3c2bc9cb4f1ffea9010ed391fec0a4fc64be785643412d922498048a25c3e24b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/thumbnail.png new file mode 100644 index 0000000..5defdeb Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/view.json new file mode 100644 index 0000000..8f56c7d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/view.json @@ -0,0 +1,123 @@ +{ + "custom": {}, + "params": { + "breakpointLarge": 768, + "breakpointMedium": 480, + "params": {}, + "path": "Header/Header" + }, + "propConfig": { + "params.breakpointLarge": { + "paramDirection": "input", + "persistent": true + }, + "params.breakpointMedium": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 58, + "width": 818 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Large" + }, + "position": { + "size": "large" + }, + "propConfig": { + "props.params.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "size": "large" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Small" + }, + "propConfig": { + "props.params.breakpoint": { + "binding": { + "config": { + "path": "view.params.breakpointMedium" + }, + "type": "property" + } + }, + "props.params.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.params.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + } + }, + "props": { + "path": "Framework/Breakpoint Embedded" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.breakpoint": { + "binding": { + "config": { + "path": "view.params.breakpointLarge" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#2B2B2B" + } + }, + "type": "ia.container.breakpt" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/resource.json new file mode 100644 index 0000000..c72d87b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c2cfb4cc9631383c08824a5b04035d2be4b726b282d7637a3c72c695ef76eb4d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/thumbnail.png new file mode 100644 index 0000000..fc9a0d0 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/view.json new file mode 100644 index 0000000..7992065 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/view.json @@ -0,0 +1,125 @@ +{ + "custom": {}, + "params": { + "params": {}, + "path": "", + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/resource.json new file mode 100644 index 0000000..d27e53c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "06c23e01ec290f6ca13eeef551662e73462fde0213329dffc4bd8fb2905b9fd1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/thumbnail.png new file mode 100644 index 0000000..a796c6d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/view.json new file mode 100644 index 0000000..763521d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/view.json @@ -0,0 +1,151 @@ +{ + "custom": {}, + "params": { + "address": "test", + "params": {}, + "path": "", + "system": {}, + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "type": "property" + } + }, + "props.params.address": { + "binding": { + "config": { + "path": "view.params.address" + }, + "type": "property" + } + }, + "props.params.system": { + "binding": { + "config": { + "path": "view.params.system" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/resource.json new file mode 100644 index 0000000..2297788 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "db86885342f7d66f668c795dcef365b245903e2866dd2bb7c0b65eab3ae9bd84" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/thumbnail.png new file mode 100644 index 0000000..783e7ff Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/view.json new file mode 100644 index 0000000..1e3209b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/view.json @@ -0,0 +1,212 @@ +{ + "custom": { + "expanded": true + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "open_expanded": true, + "params": {}, + "path": "Diagnostics/Embedded/System", + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "custom.expanded": { + "persistent": true + }, + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.open_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "classes": "Input/Button/Secondary_minimal" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.expanded" + }, + "type": "property" + } + }, + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/resource.json new file mode 100644 index 0000000..96c9785 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b3b901d566bb11ba621e0d10ea0319a82c4c91c0b63bd4762c352a32cc2d23f9" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/thumbnail.png new file mode 100644 index 0000000..5223a19 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/view.json new file mode 100644 index 0000000..dc1e396 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/view.json @@ -0,0 +1,237 @@ +{ + "custom": { + "box_shadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", + "expanded": true + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "open_expanded": true, + "params": {}, + "path": "Objects/Templates/EAM/Cards/Editable/Work Order Scheduling", + "show_box_shadow_on_expanded": true, + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "custom.box_shadow": { + "binding": { + "config": { + "expression": "if(\r\n\t{view.params.show_box_shadow_on_expanded}\u0026\u0026{view.custom.expanded},\r\n\t\u00270px 2px 4px rgba(0, 0, 40, 0.15)\u0027,\r\n\t\u0027\u0027\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.expanded": { + "persistent": true + }, + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.open_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.show_box_shadow_on_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title_transparent" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "classes": "Input/Button/Secondary_minimal" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.expanded" + }, + "type": "property" + } + }, + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded_transparent" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.boxShadow": { + "binding": { + "config": { + "path": "view.custom.box_shadow" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card_transparent" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/resource.json new file mode 100644 index 0000000..7c72a83 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "01a60868ab804c7749f2122d2f2aad8446d4d6733b32ea2e911e0f2b92c74bf1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/thumbnail.png new file mode 100644 index 0000000..250bfee Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/view.json new file mode 100644 index 0000000..b9b1bb6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/view.json @@ -0,0 +1,431 @@ +{ + "custom": { + "box_shadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", + "expanded": true, + "show_content": true + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "anchor_position": null, + "content_shown": true, + "open_expanded": true, + "params": {}, + "path": "Objects/Templates/S3/Management/file", + "show_box_shadow_on_expanded": true, + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "custom.box_shadow": { + "binding": { + "config": { + "expression": "if(\r\n\t{view.params.show_box_shadow_on_expanded}\u0026\u0026{view.custom.expanded},\r\n\t\u00270px 2px 4px rgba(0, 0, 40, 0.15)\u0027,\r\n\t\u0027\u0027\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.expanded": { + "persistent": true + }, + "custom.show_content": { + "persistent": true + }, + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.anchor_position": { + "paramDirection": "input", + "persistent": true + }, + "params.content_shown": { + "binding": { + "config": { + "path": "view.custom.show_content" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + }, + "params.open_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.show_box_shadow_on_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 600, + "width": 500 + } + }, + "root": { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# toggle \u0027show_content\u0027 view custom prop\n\tself.view.custom.show_content \u003d not self.view.custom.show_content" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.show_content},\"material/chevron_left\",\"material/chevron_right\")" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "borderStyle": "none", + "classes": "Input/Button/Secondary_minimal" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer Anchor Left" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.anchor_position}\u003d\u0027left\u0027" + }, + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Title_transparent", + "margin": "0px", + "padding": "0px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title_transparent" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "classes": "Input/Button/Secondary_minimal" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.expanded" + }, + "type": "property" + } + }, + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded_transparent" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "100%", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.show_content" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# toggle \u0027show_content\u0027 view custom prop\n\tself.view.custom.show_content \u003d not self.view.custom.show_content" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.show_content},\"material/chevron_right\",\"material/chevron_left\")" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "borderStyle": "none" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer Anchor Right" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.anchor_position}\u003d\u0027right\u0027" + }, + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Title_transparent", + "margin": "0px", + "padding": "0px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.justify": { + "binding": { + "config": { + "expression": "if({view.params.anchor_position}\u003d\u0027right\u0027,\u0027flex-end\u0027,\u0027flex-start\u0027)" + }, + "type": "expr" + } + }, + "props.style.boxShadow": { + "binding": { + "config": { + "path": "view.custom.box_shadow" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Card_transparent" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/resource.json new file mode 100644 index 0000000..375f83d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "86179f813b805558be87e83fc056ab19c1376faa6c9e3f6e43d295b92eb38414" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/thumbnail.png new file mode 100644 index 0000000..1b9f7ec Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/view.json new file mode 100644 index 0000000..7fe9f01 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/view.json @@ -0,0 +1,213 @@ +{ + "custom": { + "expanded": true + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "open_expanded": true, + "params": {}, + "path": "Diagnostics/Embedded/System", + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "custom.expanded": { + "persistent": true + }, + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.open_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "backgroundColor": "transparent", + "borderStyle": "none" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.expanded" + }, + "type": "property" + } + }, + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/resource.json new file mode 100644 index 0000000..2a513c3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ca725b6832353b0593d29ff2fdcbc56bdd2bb91713e9fa7fc8f0cb89df182e4a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/thumbnail.png new file mode 100644 index 0000000..67a2812 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/view.json new file mode 100644 index 0000000..dc1e396 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/view.json @@ -0,0 +1,237 @@ +{ + "custom": { + "box_shadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", + "expanded": true + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "open_expanded": true, + "params": {}, + "path": "Objects/Templates/EAM/Cards/Editable/Work Order Scheduling", + "show_box_shadow_on_expanded": true, + "title": "Card Title", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "propConfig": { + "custom.box_shadow": { + "binding": { + "config": { + "expression": "if(\r\n\t{view.params.show_box_shadow_on_expanded}\u0026\u0026{view.custom.expanded},\r\n\t\u00270px 2px 4px rgba(0, 0, 40, 0.15)\u0027,\r\n\t\u0027\u0027\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.expanded": { + "persistent": true + }, + "params.address": { + "paramDirection": "input", + "persistent": true + }, + "params.open_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.show_box_shadow_on_expanded": { + "paramDirection": "input", + "persistent": true + }, + "params.system": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultHeight": { + "paramDirection": "input", + "persistent": true + }, + "params.useDefaultWidth": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 339, + "width": 369 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Title_transparent" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "classes": "Input/Button/Secondary_minimal" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.custom.expanded" + }, + "type": "property" + } + }, + "props.params": { + "binding": { + "config": { + "path": "view.params.params" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.path" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.useDefaultViewHeight": { + "binding": { + "config": { + "path": "view.params.useDefaultHeight" + }, + "type": "property" + } + }, + "props.useDefaultViewWidth": { + "binding": { + "config": { + "path": "view.params.useDefaultWidth" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Framework/Card/Embedded_transparent" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.boxShadow": { + "binding": { + "config": { + "path": "view.custom.box_shadow" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/Card/Card_transparent" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/resource.json new file mode 100644 index 0000000..e3a774e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e7e63150cd795f1cd8c52796da1fff1dc9a0c1dc9350f6f112015f2aa9d1176c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/thumbnail.png new file mode 100644 index 0000000..57700fd Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/view.json new file mode 100644 index 0000000..5fc79b3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/view.json @@ -0,0 +1,787 @@ +{ + "custom": {}, + "params": { + "color": "#FFFFFF" + }, + "propConfig": { + "params.color": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 380, + "width": 250 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Color Palette" + }, + "position": { + "grow": 1 + }, + "props": { + "alignContent": "flex-start", + "alignItems": "flex-start", + "elementPosition": { + "basis": "20px", + "grow": 0, + "shrink": 0 + }, + "instances": [ + { + "color": "#FFFFFF" + }, + { + "color": "#D5D5D5" + }, + { + "color": "#AAAAAA" + }, + { + "color": "#808080" + }, + { + "color": "#555555" + }, + { + "color": "#2B2B2B" + }, + { + "color": "#000000" + }, + { + "color": "#FFCCCC" + }, + { + "color": "#FF8A8A" + }, + { + "color": "#FF4747" + }, + { + "color": "#FF0000" + }, + { + "color": "#D90000" + }, + { + "color": "#AC0000" + }, + { + "color": "#800000" + }, + { + "color": "#FFE8CC" + }, + { + "color": "#FFCA8A" + }, + { + "color": "#FFAC47" + }, + { + "color": "#FF8C00" + }, + { + "color": "#D97700" + }, + { + "color": "#AC5F00" + }, + { + "color": "#804600" + }, + { + "color": "#FFFFCC" + }, + { + "color": "#FFFF8A" + }, + { + "color": "#FFFF47" + }, + { + "color": "#FFFF00" + }, + { + "color": "#D9D900" + }, + { + "color": "#ACAC00" + }, + { + "color": "#808000" + }, + { + "color": "#CCFFCC" + }, + { + "color": "#8AFF8A" + }, + { + "color": "#47FF47" + }, + { + "color": "#00FF00" + }, + { + "color": "#00D900" + }, + { + "color": "#00AC00" + }, + { + "color": "#008000" + }, + { + "color": "#CCFFFF" + }, + { + "color": "#8AFFFF" + }, + { + "color": "#47FFFF" + }, + { + "color": "#00FFFF" + }, + { + "color": "#00D9D9" + }, + { + "color": "#00ACAC" + }, + { + "color": "#008080" + }, + { + "color": "#CCCCFF" + }, + { + "color": "#8A8AFF" + }, + { + "color": "#4747FF" + }, + { + "color": "#0000FF" + }, + { + "color": "#0000D9" + }, + { + "color": "#0000AC" + }, + { + "color": "#000080" + }, + { + "color": "#FFCCFF" + }, + { + "color": "#FF8AFF" + }, + { + "color": "#FF47FF" + }, + { + "color": "#FF00FF" + }, + { + "color": "#D900D9" + }, + { + "color": "#AC00AC" + }, + { + "color": "#800080" + } + ], + "key": "value", + "path": "Framework/Color Picker/Color", + "style": { + "backgroundColor": "#FFFFFF" + }, + "useDefaultViewHeight": false, + "useDefaultViewWidth": false, + "wrap": "wrap" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "color-clicked", + "pageScope": true, + "script": "\tcolor \u003d payload[\"color\"]\n\tself.view.params.color \u003d color", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.flex-repeater" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "style": { + "marginLeft": "6px" + }, + "text": "Red" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "path": "view.params.color" + }, + "transforms": [ + { + "code": "\ttry:\n\t\treturn int(value[1:3], 16)\n\texcept:\n\t\treturn None", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tif origin in [\"Browser\", \"BindingWriteback\"]:\n\t\tif currentValue.value !\u003d None:\n\t\t\tcolor \u003d self.view.params.color\n\t\t\thexColor \u003d hex(currentValue.value).replace(\"0x\",\"\").upper().replace(\"L\",\"\")\n\t\t\tif len(hexColor) \u003d\u003d 1:\n\t\t\t\thexColor \u003d \"0%s\" % hexColor\n\t\t\tcolor \u003d \"#\" + hexColor + color[3:]\n\t\t\tself.view.params.color \u003d color" + } + } + }, + "props": { + "format": "0,0", + "inputBounds": { + "maximum": 255, + "minimum": 0 + }, + "style": { + "borderRadius": "4px" + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "props": { + "direction": "column", + "justify": "center", + "style": { + "marginLeft": "10px", + "marginRight": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Slider" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "path": "../FlexContainer/NumericEntryField.props.value" + }, + "type": "property" + } + } + }, + "props": { + "labels": { + "interval": 42.5, + "show": true + }, + "max": 255, + "style": { + "marginLeft": "10px", + "marginRight": "20px" + } + }, + "type": "ia.input.slider" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "72px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "style": { + "marginLeft": "6px" + }, + "text": "Blue" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "path": "view.params.color" + }, + "transforms": [ + { + "code": "\ttry:\n\t\treturn int(value[3:5], 16)\n\texcept:\n\t\treturn None", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tif origin in [\"Browser\", \"BindingWriteback\"]:\n\t\tif currentValue.value !\u003d None:\n\t\t\tcolor \u003d self.view.params.color\n\t\t\thexColor \u003d hex(currentValue.value).replace(\"0x\",\"\").upper().replace(\"L\",\"\")\n\t\t\tif len(hexColor) \u003d\u003d 1:\n\t\t\t\thexColor \u003d \"0%s\" % hexColor\n\t\t\tcolor \u003d \"#\" + color[1:3] + hexColor + color[5:]\n\t\t\tself.view.params.color \u003d color" + } + } + }, + "props": { + "format": "0,0", + "inputBounds": { + "maximum": 255, + "minimum": 0 + }, + "style": { + "borderRadius": "4px" + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "props": { + "direction": "column", + "justify": "center", + "style": { + "marginLeft": "10px", + "marginRight": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Slider" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "path": "../FlexContainer/NumericEntryField.props.value" + }, + "type": "property" + } + } + }, + "props": { + "labels": { + "interval": 42.5, + "show": true + }, + "max": 255, + "style": { + "marginLeft": "10px", + "marginRight": "20px" + } + }, + "type": "ia.input.slider" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "72px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "style": { + "marginLeft": "6px" + }, + "text": "Green" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "path": "view.params.color" + }, + "transforms": [ + { + "code": "\ttry:\n\t\treturn int(value[5:], 16)\n\texcept:\n\t\treturn None", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tif origin in [\"Browser\", \"BindingWriteback\"]:\n\t\tif currentValue.value !\u003d None:\n\t\t\tcolor \u003d self.view.params.color\n\t\t\thexColor \u003d hex(currentValue.value).replace(\"0x\",\"\").upper().replace(\"L\",\"\")\n\t\t\tif len(hexColor) \u003d\u003d 1:\n\t\t\t\thexColor \u003d \"0%s\" % hexColor\n\t\t\tcolor \u003d \"#\" + color[1:5] + hexColor\n\t\t\tself.view.params.color \u003d color" + } + } + }, + "props": { + "format": "0,0", + "inputBounds": { + "maximum": 255, + "minimum": 0 + }, + "style": { + "borderRadius": "4px" + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "props": { + "direction": "column", + "justify": "center", + "style": { + "marginLeft": "10px", + "marginRight": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Slider" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "path": "../FlexContainer/NumericEntryField.props.value" + }, + "type": "property" + } + } + }, + "props": { + "labels": { + "interval": 42.5, + "show": true + }, + "max": 255, + "style": { + "marginLeft": "10px", + "marginRight": "20px" + } + }, + "type": "ia.input.slider" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "72px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "shrink": 0 + }, + "props": { + "style": { + "marginLeft": "6px", + "marginRight": "6px" + }, + "text": "Color" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TextField" + }, + "position": { + "basis": "100px", + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.color" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderRadius": "4px" + } + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "20px" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.params.color" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderColor": "#D3D3D3", + "borderRadius": "32px", + "borderStyle": "solid", + "borderWidth": "1px", + "margin": "6px" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t## Send message back to view/component that called color picker popup\n\tsystem.perspective.sendMessage(\n\t\t\"updateFromColorPicker\",\n\t\tpayload\u003d{\"color\": self.view.params.color},\n\t\tscope\u003d\"session\"\n\t)\n\t## close color picker poup\n\tsystem.perspective.closePopup(\"ColorPicker\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button Update and Close", + "tooltip": { + "enabled": true, + "location": "center-left", + "text": "Update and close" + } + }, + "props": { + "image": { + "icon": { + "path": "material/exit_to_app" + } + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "justify": "flex-end" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "32px", + "shrink": 0 + }, + "props": { + "style": { + "marginBottom": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Framework/ColorPicker/Container" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/resource.json new file mode 100644 index 0000000..43794d0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1336c010d1ed3ecb3b153589fd49b384580c9d23ab8fd69e4e1a5aed09ac7f7e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/view.json new file mode 100644 index 0000000..f9a1b0b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/view.json @@ -0,0 +1,65 @@ +{ + "custom": {}, + "params": { + "color": "#00FF00" + }, + "propConfig": { + "params.color": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 20 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tcolor \u003d self.view.params.color\n\tsystem.perspective.sendMessage(messageType\u003d\"color-clicked\", payload\u003d{\"color\":color})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label" + }, + "position": { + "basis": "20px", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.params.color" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/resource.json new file mode 100644 index 0000000..1dbf16a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "8eefc76e408eb7b2cc60cfe9599ea618013adfc507a40631ece85cf5e8222b91" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/thumbnail.png new file mode 100644 index 0000000..6d8b80b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/view.json new file mode 100644 index 0000000..6adaede --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/view.json @@ -0,0 +1,1204 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "Header", + "start_time": { + "$": [ + "ts", + 192, + 1751966913728 + ], + "$ts": 1751966913727 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "params": {}, + "size": "medium" + }, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": " if value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n return self.custom.activityLogger.alt_pageid.lower()\n else:\n return value[1:].lower()\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + }, + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.size": { + "paramDirection": "input" + } + }, + "props": { + "defaultSize": { + "height": 58 + } + }, + "root": { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Monitron" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/vibration", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Monitron/monitron_data" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Oil" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/opacity", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Oil/oil_condition_monitoring" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Image" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "height": 30, + "mode": "fill" + }, + "source": "/system/images/Builtin/amazon_rme_logo.png" + }, + "type": "ia.display.image" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer Start" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "id": "Docked-West", + "type": "toggle" + }, + "scope": "C", + "type": "dock" + } + } + }, + "meta": { + "name": "Menu Dock" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "color": "#FFFFFF", + "path": "material/menu", + "style": { + "classes": "Header/Icon", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "550px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "300px", + "shrink": 0 + }, + "propConfig": { + "custom.area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"Area\"),\"\"))" + }, + "type": "expr" + } + }, + "custom.lookup_path": { + "binding": { + "config": { + "expression": "try(if({this.custom.path}[1,0]\u003d\"DetailedView\", {this.custom.path}[2,0],\r\n\"\"), \"\")\r\n" + }, + "type": "expr" + } + }, + "custom.path": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "expression": "split({value},\"/\")", + "type": "expression" + } + ], + "type": "property" + } + }, + "custom.path_to_display": { + "binding": { + "config": { + "expression": "if(len({this.custom.lookup_path})\u003c1, \"\",\r\nif(len({this.custom.area}) \u003c1, {this.custom.lookup_path},\r\nif(len({this.custom.sub_area}) \u003e 0, concat({this.custom.lookup_path} + \" / \" + {this.custom.area} + \" / \" + {this.custom.sub_area}),\r\nconcat({this.custom.lookup_path} + \" / \" + {this.custom.area}))))" + }, + "type": "expr" + } + }, + "custom.plc_dict": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "expression": "jsonGet({value},{this.custom.lookup_path})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.sub_area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"SubArea\"), \"\"))" + }, + "type": "expr" + } + }, + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "this.custom.path_to_display" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Area" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Icon_1", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "Database Connection Status: LOST", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Database Connection Status: GOOD" + }, + { + "input": false, + "output": "Database Connection Status: LOST" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.color": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "#FF0000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#47FF47" + }, + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": " db_tag_path \u003d \"[System]Gateway/Database/MariaDB/Available\"\n\t\n if not (system.tag.readBlocking([db_tag_path])[0].value):\n \tsystem.perspective.openPopup(\"errorPopup\",\u0027PopUp-Views/DatabaseError\u0027, title\u003d\"Database Error\")\n\t" + }, + "persistent": true + } + }, + "props": { + "color": "#47FF47", + "path": "material/table_chart" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer 1" + }, + "position": { + "basis": "20px" + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "buttonid": "HeaderNotifyIcon", + "entries": [ + { + "PrimaryKey": "2024-05-08 10:17:51", + "author": "pll", + "body": "Introducing our brand new Announcement Feature! 🎉 Stay in the loop with important updates, new features, planned downtime events, all in one place. Never miss out again! Check it out now and stay tuned for the latest updates. 🔊", + "childproj": "https://eu-preprod.scada2.rme.amazon.dev: MAN2", + "expire": "2024-05-09 05:00:00", + "link1": "https://", + "link1title": "", + "link2": "https://", + "link2title": "", + "priority": "Healthy", + "publish": "2024-05-08 10:08:33", + "title": "📢 Exciting News! 📢", + "whids": "" + } + ], + "entryCount": 1, + "highestPriority": 5 + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "draggable": true, + "id": "ioNP2CXn", + "modal": true, + "overlayDismiss": true, + "resizable": true, + "showCloseIcon": true, + "title": "Notifications", + "type": "open", + "viewParams": { + "entryCount": "{/root/Icon_0.custom.entryCount}", + "instances": "{/root/Icon_0.custom.entries}" + }, + "viewPath": "PopUp-Views/Notify-Tool/Notify-Popup", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Icon_0", + "tooltip": { + "enabled": true, + "location": "bottom-right", + "style": { + "whiteSpace": "pre" + }, + "text": "📢 Exciting News! 📢\n" + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "custom.refreshMSG": { + "binding": { + "config": { + "expression": "now(600000)" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027refreshNotifyIcon\u0027)" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.EntriesList" + }, + "transforms": [ + { + "code": "\tfrom datetime import datetime\n\t\n#\tRead entries from dynamo table\n\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\tEntriesList \u003d returns[\u0027Items\u0027]\n\tEntriesList.reverse()\n#\treturn EntriesList\n\n#\tCreate empty list and now string\n\tpublishdates \u003d []\n\tnow \u003d datetime.now()\n\tnowstr \u003d str(now)[:19]\n\tactiveNotify \u003d False\n\twhid \u003d self.session.custom.fc\n\tstates \u003d {\u0027Healthy\u0027:5,\u0027Diagnostic\u0027:4, \u0027Low\u0027:3, \u0027Medium\u0027:2, \u0027High\u0027:1}\n#\tCheck EntriesList for active entries based on publish and expire times\n\tactiveEntries \u003d []\n\ttooltip \u003d []\n\tcount \u003d 0\n\thighestPriority \u003d 5\n\tfor e in EntriesList:\n\t\t\n\t\tif len(e[\u0027whids\u0027])\u003e0:\n\t\t\tif whid in e[\u0027whids\u0027]:\n\t\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\t\tactiveEntries.append(e)\n\t\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\t\tactiveNotify \u003d True\n\t\t\t\t\tcount +\u003d1\n\t\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\t\telse:\n\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\tactiveEntries.append(e)\n\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\tactiveNotify \u003d True\t\t\n\t\t\t\tcount +\u003d1\t\n\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\n\t\t\t\n\ttooltiptext \u003d \u0027\u0027\n\tfor i in tooltip:\n\t\ttooltiptext+\u003d i+\u0027\\n\u0027\n\tself.custom.entries \u003d activeEntries\n\tself.custom.highestPriority \u003d highestPriority\n\tself.custom.entryCount \u003d count\n\tself.meta.tooltip.text \u003d tooltiptext\t\n\n\n#\treturn returns\n#\treturn activeEntries\n\treturn activeNotify", + "type": "script" + } + ], + "type": "property" + } + }, + "props.color": { + "binding": { + "config": { + "path": "this.custom.highestPriority" + }, + "transforms": [ + { + "fallback": "state5", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "state1" + }, + { + "input": 2, + "output": "state2" + }, + { + "input": 3, + "output": "state3" + }, + { + "input": 4, + "output": "state4" + }, + { + "input": 5, + "output": "state5" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "code": "\ttest \u003d self.session.custom.colours.colour_impaired\n\tstatecolor \u003d self.session.custom.colours[value]\n\treturn statecolor", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/campaign", + "style": { + "marginLeft": 5, + "marginRight": 5 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "refreshNotifyIcon", + "pageScope": true, + "script": "\n\tself.refreshBinding(\u0027props.color\u0027)\n\tself.refreshBinding(\u0027position.display\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_3" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "buttonid": "HeaderLegendIcon" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "draggable": false, + "id": "TZyBcXB7", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewPath": "PopUp-Views/Legend_Popup/Legend-popup-view", + "viewportBound": true + }, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "delay": 250, + "enabled": true, + "sustain": 1000, + "text": "Legend" + } + }, + "position": { + "basis": "35px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/legend_toggle", + "style": { + "classes": "", + "marginRight": 20 + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.navigate(page \u003d \"/Real-Time\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "../Label.props.text" + }, + "transforms": [ + { + "code": "\t\n\treturn \"red\" if value \u003e 0 else \"#fff\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/notifications_active", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority", + "returnFormat": "json" + }, + "transforms": [ + { + "code": "\ttotal \u003d sum(row[\"Count\"] for row in value if \"Count\" in row and row[\"Count\"] is not None)\n\treturn total", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{./Label.props.text} + \" active alarms in the system\"" + }, + "type": "expr" + } + } + }, + "props": { + "justify": "flex-end", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_2" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "covert": true + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tdevice_list \u003d tags.tag_utilities.get_devices(self.session.custom.fc)\n\ttags.tag_utilities.reset_disconnect_tags(self.session.custom.fc, device_list)\n\tAWS.wbsckt_abort.close_websckt()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon_2", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "custom.heartbeat_received": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_heartbeat_interval" + }, + "transforms": [ + { + "expression": "if(secondsBetween(todate({value}),todate(now())) \u003e 70, False, True)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.wbsckt_running": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_running" + }, + "transforms": [ + { + "expression": "if({value} \u003d True \u0026\u0026 ({this.custom.heartbeat_received} \u003d True) , True, False)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "websocket running" + }, + { + "input": false, + "output": "websocket disconnected" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.color": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF4747" + }, + { + "input": true, + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/location_city", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "expression": "len({this.props.text}) * 11 + \"px\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "Configuration/FC" + }, + "type": "tag" + } + } + }, + "props": { + "icon": "material/building", + "style": { + "borderWidth": "0.25px", + "color": "#FFFFFF", + "textAlign": "", + "textIndent": 10 + }, + "textStyle": { + "lineBreak": "auto" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "User" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/person", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "hasDelegate": true, + "name": "Sign In" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"small\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "session.props.auth.user.userName" + }, + "transforms": [ + { + "code": "\tif len(value) \u003d\u003d 0 or value \u003d\u003d \"null\":\n\t return \"Sign In\"\n\telse:\n\t return value.split(\"@\")[0]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer", + "marginLeft": "4px" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_0" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeSession()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Exit", + "tooltip": { + "enabled": true, + "location": "bottom-left", + "style": { + "fontFamily": "Arial", + "fontSize": 12 + }, + "tail": false, + "text": "Exit Application" + } + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/exit_to_app", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_1" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "justify": "flex-end" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/resource.json new file mode 100644 index 0000000..b09100c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "43fabee39da2d1cd17b72e0cf0f62a4a7e1388a92dd758cd2f6883ba012bef1c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/thumbnail.png new file mode 100644 index 0000000..60e320d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/view.json new file mode 100644 index 0000000..2fcf676 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/view.json @@ -0,0 +1,673 @@ +{ + "custom": { + "PLCs": "{ \"MCM05 Sorter Destination and Chutes\": [ \"MCM05\" ], \"MCM04 Sorter Destination, Chutes and Bypass\": [ \"MCM04\" ], \"MCM03 Fluid Inbound\": [ \"MCM03\" ], \"MCM02 Fluid Inbound\": [ \"MCM02\" ], \"MCM01 Bulk Inbound\": [ \"MCM01\" ] }", + "activityLogger": { + "alt_pageid": "command_control", + "start_time": { + "$": [ + "ts", + 192, + 1756710337161 + ], + "$ts": 1756710337161 + } + }, + "devices": { + "MCM01": { + "area": "Bulk Inbound", + "name": "MCM01", + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "MCM02": { + "area": "Fluid Inbound", + "name": "MCM02", + "tagProps": [ + "MCM02", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "MCM03": { + "area": "Fluid Inbound", + "name": "MCM03", + "tagProps": [ + "MCM03", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "MCM04": { + "area": "Sorter Destination, Chutes and Bypass", + "name": "MCM04", + "tagProps": [ + "MCM04", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "MCM05": { + "area": "Sorter Destination and Chutes", + "name": "MCM05", + "tagProps": [ + "MCM05", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.logger.callLogger(self, \u0027page\u0027)\n\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "page_name": "Command and Control" + }, + "propConfig": { + "custom.PLCs": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" + }, + "type": "tag" + }, + "persistent": true + }, + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.devices": { + "binding": { + "config": { + "path": "view.custom.PLCs" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tPLCs \u003d {}\n\tfc \u003d self.session.custom.fc\n\tconfig \u003d system.tag.readBlocking(\u0027[\u0027 + fc + \u0027_SCADA_TAG_PROVIDER]\u0027 + \u0027/Configuration/PLC\u0027)[0].value\n\t\n\tif devices:\n\t\tfor k, v in devices.items():\n\t\t\tdevice_list \u003d v\n\t\t\tfor i in device_list:\n\t\t\t\tdecode \u003d system.util.jsonDecode(config)\n\t\t\t\tif decode:\n\t\t\t\t\tarea \u003d decode[i][\"Area\"]\n\t\t\t\t\tsub_area \u003d decode[i][\"SubArea\"]\n\t\t\t\t\tarea_label \u003d str(area) + \"/\" + str(sub_area) if sub_area else str(area)\n\t\t\t\telse:\n\t\t\t\t\tarea \u003d \"\"\n\t\t\t\t\tarea_label \u003d \"\"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tPLCs[i] \u003d {\u0027name\u0027:i,\u0027area\u0027:area_label,\u0027tagProps\u0027:[\n\t\t\t\t\t\t\t\t i,\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\",\n\t\t\t\t\t\t\t\t \"value\"\n\t\t\t\t\t\t\t\t ]}\n\t\n\treturn PLCs", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.page_name": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.devices" + }, + "transforms": [ + { + "code": "\tresults \u003d []\n\tfor row, val in value.items():\n\t\tresults.append({\"plc\": val[\"name\"], \"area\": val[\"area\"],\"status\": {\"tagProps\":val[\"tagProps\"]},\"alarms\": {\"tagProps\":val[\"tagProps\"]},\"actions\": {\"tagProps\":val[\"tagProps\"]}})\n\t\n\tresults.sort(key\u003dlambda item: item[\u0027plc\u0027])\n\treturn results", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "cells": { + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 16, + "paddingRight": 16 + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plc", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "classes": "", + "color": "#4A4A4A", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 11, + "paddingRight": 11 + }, + "title": "PLC" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "area", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "classes": "", + "color": "#4A4A4A", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 11, + "paddingRight": 11 + }, + "title": "Area" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "classes": "", + "color": "#4A4A4A", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 11, + "paddingRight": 11 + }, + "title": "Status" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "Symbol-Views/Controller-Views/CommandControlStatus", + "visible": true, + "width": 75 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "alarms", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "classes": "", + "color": "#4A4A4A", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 11, + "paddingRight": 11 + }, + "title": "Active Alarms" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "Symbol-Views/Controller-Views/CommandControlAlarms", + "visible": true, + "width": "auto" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "actions", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderColor": "#4A4A4A", + "borderStyle": "solid", + "borderWidth": 1, + "classes": "", + "color": "#4A4A4A", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 11, + "paddingRight": 11 + }, + "title": "Controls" + }, + "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": "view", + "resizable": false, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "classes": "", + "textAlign": "center" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "Symbol-Views/Controller-Views/CommandControlActions", + "visible": true, + "width": "auto" + } + ], + "dragOrderable": false, + "pager": { + "activeOption": 50, + "initialOption": 50 + }, + "rows": { + "height": 44, + "highlight": { + "color": "#EEEEEE" + }, + "striped": { + "enabled": false + }, + "style": { + "backgroundColor": "#FFFFFF", + "borderColor": "#4A4A4A", + "borderStyle": "none", + "borderWidth": 1, + "classes": "Fonts/BodyText14", + "color": "#4A4A4A" + } + }, + "selection": { + "enableRowSelection": false + }, + "style": { + "borderStyle": "none", + "margin": 5, + "overflow": "hidden", + "overflowX": "hidden", + "overflowY": "hidden" + }, + "virtualized": false + }, + "type": "ia.display.table" + } + ], + "custom": { + "Devices": [], + "count": "value", + "delay": 4000 + }, + "events": { + "system": { + "onShutdown": [ + { + "config": { + "script": "\tself.session.custom.command_auth.enabled \u003d False" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\tsession_id \u003d self.session.props.id\n\tpage_id \u003d self.view.params.page_name\n\tCommands.analytics.send_page_details(whid, session_id, page_id)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/resource.json new file mode 100644 index 0000000..4dd716d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "713a9ec5a3f159e0258b6044ee4075a35dd478324b80ea3a39d66ec96e90c267" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/thumbnail.png new file mode 100644 index 0000000..4f75374 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/view.json new file mode 100644 index 0000000..8c494ee --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/view.json @@ -0,0 +1,7467 @@ +{ + "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" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/resource.json new file mode 100644 index 0000000..407c119 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6034a7817ddb7a48866c4de18590a5cb79154942328ce74aeae2d381823fcd04" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/thumbnail.png new file mode 100644 index 0000000..07843ca Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/view.json new file mode 100644 index 0000000..37073f4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/view.json @@ -0,0 +1,110 @@ +{ + "custom": {}, + "params": { + "Display": true, + "Label": "value", + "Value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" + }, + "propConfig": { + "params.Display": { + "paramDirection": "input", + "persistent": true + }, + "params.Label": { + "paramDirection": "input", + "persistent": true + }, + "params.Value": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 140 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.Display" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.Label" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "border-bottom": "0.75px solid black" + }, + "textStyle": { + "fontSize": 12, + "fontWeight": "bolder", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "value" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.Display" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.Value" + }, + "type": "property" + } + } + }, + "props": { + "textStyle": { + "fontSize": 12, + "overflowWrap": "break-word", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/resource.json new file mode 100644 index 0000000..1f620dc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f1a055cb360c4c0890dd82da99df265a63b54b5c8138bcf823306666bf43df21" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/thumbnail.png new file mode 100644 index 0000000..082edb5 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/view.json new file mode 100644 index 0000000..decb668 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/view.json @@ -0,0 +1,115 @@ +{ + "custom": {}, + "params": { + "row": "value", + "rowIndex": "value", + "value": { + "Msg": "Mesg PlaceHolder", + "Timestamp": "TimeStamp Place holder" + } + }, + "propConfig": { + "params.row": { + "paramDirection": "input", + "persistent": true + }, + "params.rowIndex": { + "paramDirection": "input", + "persistent": true + }, + "params.value": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 59, + "width": 891 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "147px", + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.value" + }, + "transforms": [ + { + "code": "\treturn value[\"Timestamp\"]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.value" + }, + "transforms": [ + { + "code": "\treturn value[\"Msg\"]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "margin": "5px", + "padding": "5px" + }, + "textStyle": { + "fontSize": 14, + "fontWeight": "100", + "overflow": "visible", + "overflowWrap": "break-word", + "wordWrap": "break-word" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "color": "#000000", + "margin": "10px", + "padding": "5px" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/resource.json new file mode 100644 index 0000000..0268d29 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "20c6fb177bea412308ccefef761d00f14a21e4158e622665889890d76398261d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/thumbnail.png new file mode 100644 index 0000000..7396f4b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/view.json new file mode 100644 index 0000000..e898bdb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/view.json @@ -0,0 +1,318 @@ +{ + "custom": { + "numberOfColumns": 6, + "test": [ + { + "Label": "Seq", + "Value": 2, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "Type", + "Value": "StateChanged", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "When", + "Value": "1670429640000", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "Source", + "Value": "PLC01/054BV55", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "CurrentState", + "Value": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "ReasonCode", + "Value": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + } + ] + }, + "params": { + "checkedState": "False", + "index": "value", + "rowData": [ + [ + "Seq", + 2 + ], + [ + "Type", + "StateChanged" + ], + [ + "When", + "1670429640000" + ], + [ + "Source", + "PLC01/054BV55" + ], + [ + "CurrentState", + "" + ], + [ + "ReasonCode", + "" + ] + ] + }, + "propConfig": { + "custom.test": { + "persistent": true + }, + "params.checkedState": { + "paramDirection": "input", + "persistent": true + }, + "params.index": { + "paramDirection": "input", + "persistent": true + }, + "params.rowData": { + "onChange": { + "enabled": null, + "script": "\tself.custom.numberOfColumns \u003d len(self.params.rowData)\n\t\n\tsystem.perspective.print(\"ROW SCRIPT\")\n\tsystem.perspective.print(self.params.rowData)\n\tinstances \u003d []\n\t\n\tfor col in self.params.rowData:\n\t\tsystem.perspective.print(col)\n\t\tinstance \u003d {\n\t\t\t \"instanceStyle\": {\n\t\t\t \"classes\": \"\"\n\t\t\t },\n\t\t\t \"instancePosition\": {},\n\t\t\t \"Label\": col[0],\n\t\t\t \"Value\": col[1]\n\t\t\t }\n\t\tinstances.append(instance)\n\t\t\n\tself.getChild(\"root\").getChild(\"FlexRepeater\").props.instances \u003d instances\n\t\n\tself.custom.test \u003d instances\n" + }, + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 86, + "width": 1220 + } + }, + "root": { + "children": [ + { + "custom": { + "SelectionData": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.print(self.view.params.index)\n\tmsg \u003d \"update_selectionData\"\n\tpayload \u003d {\n\t\t\"index\" : self.view.params.index,\n\t\t\"state\"\t: self.props.selected\n\t}\n\tsystem.perspective.sendMessage(msg, payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Checkbox" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "path": "view.params.checkedState" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "marginRight": "2px" + }, + "text": "" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "tableSelectionData", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.SelectionData \u003d payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "key": { + "backgroundColor": "#F2F3F4", + "borderStyle": "none", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "max-height": "400px", + "overflow": "visible" + } + }, + "meta": { + "name": "FlexRepeater" + }, + "props": { + "elementPosition": { + "basis": "150px" + }, + "instances": [ + { + "Label": "Seq", + "Value": 2, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "Type", + "Value": "StateChanged", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "When", + "Value": "1670429640000", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "Source", + "Value": "PLC01/054BV55", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "CurrentState", + "Value": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Label": "ReasonCode", + "Value": "", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + } + ], + "path": "Main-Views/Commissioning Tool/Column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "borderWidth": "1px", + "margin": "2px", + "marginRight": 5, + "overflow": "hidden", + "radius": "4px" + }, + "useDefaultViewHeight": false + }, + "type": "ia.display.flex-repeater" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.print(self.view.params.index)\n\tmsg \u003d \"measurementTab_deleteRows\"\n\tpayload \u003d {\"index\" : self.view.params.index}\n\tsystem.perspective.sendMessage(msg, payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "grow": 1 + }, + "props": { + "image": { + "icon": { + "path": "material/delete_forever" + } + }, + "primary": false, + "style": { + "margin": "10 px", + "max-height": "40px" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "direction": "column", + "justify": "center" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "classes": "FadeInFast, background, background-none", + "margin": "5px", + "max-height": "75px" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/resource.json new file mode 100644 index 0000000..0fcaef0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "841a078edff0ff93e8f1e4e35110c5a1ad93689eb80048766be8cdec5304bc65" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/thumbnail.png new file mode 100644 index 0000000..770e284 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/view.json new file mode 100644 index 0000000..de19572 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/view.json @@ -0,0 +1,709 @@ +{ + "custom": { + "no_items_selected": true, + "numberOfRows": 3, + "transformedData": [ + { + "checkedState": false, + "index": 0, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + 1 + ], + [ + "Type", + "StateChanged" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "CurrentState", + "" + ], + [ + "ReasonCode", + "" + ] + ] + }, + { + "checkedState": false, + "index": 1, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + "1" + ], + [ + "Type", + "ModeChanged" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "CurrentMode", + "" + ] + ] + }, + { + "checkedState": false, + "index": 2, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + "2" + ], + [ + "Type", + "MeasurementEvent" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "MeasurementName", + "" + ], + [ + "SamplingInterval", + "" + ], + [ + "Unit", + "" + ], + [ + "DeltaValue", + "" + ] + ] + } + ] + }, + "params": { + "last_message_index": 0, + "tabledata": [ + { + "CurrentMode": "", + "CurrentState": "", + "DeltaValue": "", + "EventID": "", + "EventState": "", + "MeasurementName": "", + "ReasonCode": "", + "SamplingInterval": "", + "Selected": false, + "Seq": 1, + "Source": "PLC01/054BV51", + "Type": "StateChanged", + "Unit": "", + "When": 1692112814922 + }, + { + "CurrentMode": "", + "CurrentState": "", + "DeltaValue": "", + "EventID": "", + "EventState": "", + "MeasurementName": "", + "ReasonCode": "", + "SamplingInterval": "", + "Selected": false, + "Seq": "1", + "Source": "PLC01/054BV51", + "Type": "ModeChanged", + "Unit": "", + "When": 1692112814922 + }, + { + "CurrentMode": "", + "CurrentState": "", + "DeltaValue": "", + "EventID": "", + "EventState": "", + "MeasurementName": "", + "ReasonCode": "", + "SamplingInterval": "", + "Selected": false, + "Seq": "2", + "Source": "PLC01/054BV51", + "Type": "MeasurementEvent", + "Unit": "", + "When": 1692112814922 + } + ] + }, + "propConfig": { + "custom.no_items_selected": { + "binding": { + "config": { + "path": "view.params.tabledata" + }, + "transforms": [ + { + "code": "\tno_items_selected \u003d True\n\t\n\tfor i in value :\n\t\tif i[\"Selected\"]:\n\t\t\tno_items_selected \u003d False\n\t \t\n\treturn no_items_selected", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.transformedData": { + "onChange": { + "enabled": false, + "script": "\t\n\tinstances \u003d[]\n\t\n\tfor i , value in enumerate(self.custom.transformedData):\n\t\tinstance \u003d {\n\t\t\t\t \"instanceStyle\": {\n\t\t\t\t \"classes\": \"\"\n\t\t\t\t },\n\t\t\t\t \"instancePosition\": {},\n\t\t\t\t \"index\": i,\n\t\t\t\t \"rowData\": value\n\t\t\t\t }\n\t\tinstances.append(instance)\n\t\t\n\tself.getChild(\"root\").getChild(\"FlexRepeater\").props.instances \u003d instances\n\t" + }, + "persistent": true + }, + "params.last_message_index": { + "paramDirection": "input", + "persistent": true + }, + "params.tabledata": { + "onChange": { + "enabled": null, + "script": "\n\ttransformed_data \u003d []\n\t\n\tstateChangeParams \u003d [\"CurrentState\" , \"ReasonCode\"]\n\tmodeChangeParams \u003d [\"CurrentMode\"]\n\teventParams \u003d [\"EventID\" , \"EventState\"]\n\tmeasurementParams \u003d [\"MeasurementName\", \"SamplingInterval\", \"Unit\", \"DeltaValue\" ]\n\t\t\t\t\t\n\tfor item in self.params.tabledata:\n\t\trow_data \u003d []\n\t\tcol1 \u003d (\"Seq\", item[\"Seq\"])\n\t\trow_data.append(col1)\n\t\tcol2 \u003d (\"Type\",item[\"Type\"])\n\t\trow_data.append(col2)\n\t\tcol3 \u003d (\"When\",item[\"When\"])\n\t\trow_data.append(col3)\n\t\tcol4 \u003d (\"Source\", item[\"Source\"])\n\t\trow_data.append(col4)\n\t\t\n\t\tif item[\"Type\"] \u003d\u003d \"StateChanged\":\n\t\t\tcol5 \u003d (\"CurrentState\", item[\"CurrentState\"])\n\t\t\trow_data.append(col5)\n\t\t\tcol6 \u003d (\"ReasonCode\", item[\"ReasonCode\"]) \n\t\t\trow_data.append(col6)\n\t\t\n\t\tif item[\"Type\"] \u003d\u003d \"ModeChanged\":\n\t\t\tcol5 \u003d (\"CurrentMode\", item[\"CurrentMode\"])\n\t\t\trow_data.append(col5)\n\t\t\n\t\tif item[\"Type\"] \u003d\u003d \"Event\":\n\t\t\tcol5 \u003d (\"EventID\", item[\"EventID\"])\n\t\t\trow_data.append(col5)\n\t\t\t\n\t\t\tcol6 \u003d (\"EventState\", item[\"EventState\"])\n\t\t\trow_data.append(col6)\n\t\t\t\n\t\tif item[\"Type\"] \u003d\u003d \"MeasurementEvent\":\n\t\t\tcol5 \u003d (\"MeasurementName\", item[\"MeasurementName\"])\n\t\t\trow_data.append(col5)\n\t\t\tcol6 \u003d (\"SamplingInterval\", item[\"SamplingInterval\"])\n\t\t\trow_data.append(col6)\n\t\t\tcol7 \u003d (\"Unit\", item[\"Unit\"])\n\t\t\trow_data.append(col7)\n\t\t\tcol8 \u003d (\"DeltaValue\", item[\"DeltaValue\"])\n\t\t\trow_data.append(col8)\n\t\t\n\t\tselected \u003d item[\"Selected\"]\t\t\n\t\t\t\t\t\t\t\t\n\t\tsystem.perspective.print((row_data, selected ))\n\t\ttransformed_data.append((row_data, selected))\n\t\n\tself.custom.numberOfRows \u003d len(self.params.tabledata)\n\t\n\tsystem.perspective.print(transformed_data)\n\tself.custom.transformedData \u003d transformed_data\n\t\n\t\n\tsystem.perspective.print(type(self.custom.transformedData))\n\t\n\t\t\n\tinstances \u003d[]\n\t\n\tfor i , row in enumerate(transformed_data):\n\t\tinstance \u003d {\n\t\t\t\t \"instanceStyle\": {\n\t\t\t\t \"classes\": \"\"\n\t\t\t\t },\n\t\t\t\t \"instancePosition\": {},\n\t\t\t\t \"index\": i,\n\t\t\t\t \"rowData\": row[0], \n\t\t\t\t \"checkedState\": row[1]\n\t\t\t\t }\n\t\tinstances.append(instance)\n\t\t\n\tself.getChild(\"root\").getChild(\"FlexRepeater\").props.instances \u003d instances\n\t\n\tself.custom.transformedData \u003d instances\n\t\t" + }, + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 788, + "width": 1314 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "fontWeight": "bolder" + }, + "text": "Sequence" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "320px", + "grow": 1, + "shrink": 0 + }, + "props": { + "direction": "column", + "elementPosition": { + "basis": "800px" + }, + "elementStyle": { + "max-height": "75px", + "min-height": "75px" + }, + "instances": [ + { + "checkedState": false, + "index": 0, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + 1 + ], + [ + "Type", + "StateChanged" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "CurrentState", + "" + ], + [ + "ReasonCode", + "" + ] + ] + }, + { + "checkedState": false, + "index": 1, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + "1" + ], + [ + "Type", + "ModeChanged" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "CurrentMode", + "" + ] + ] + }, + { + "checkedState": false, + "index": 2, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + }, + "rowData": [ + [ + "Seq", + "2" + ], + [ + "Type", + "MeasurementEvent" + ], + [ + "When", + 1692112814922 + ], + [ + "Source", + "PLC01/054BV51" + ], + [ + "MeasurementName", + "" + ], + [ + "SamplingInterval", + "" + ], + [ + "Unit", + "" + ], + [ + "DeltaValue", + "" + ] + ] + } + ], + "path": "Main-Views/Commissioning Tool/Row", + "useDefaultViewHeight": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "delete-instance", + "pageScope": true, + "script": "\t# implement your handler here\n\tsystem.perspective.print(payload)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.flex-repeater" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.no_items_selected :\n\t\tsystem.perspective.sendMessage(\"SelectAll\", None , \"page\")\n\t\tMsg \u003d \"Selecting all messages \"\n\telse:\n\t\tsystem.perspective.sendMessage(\"ClearSelection\", None , \"page\")\n\t\tMsg \u003d \"Clearing selection \"\n\t\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ClearSelection" + }, + "position": { + "basis": "55px", + "shrink": 0 + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "path": "view.custom.no_items_selected" + }, + "transforms": [ + { + "code": "\tif not value:\n\t\treturn \"material/clear\"\n\telse:\n\t\treturn \"material/check_box\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "marginLeft": "10px" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\tMsg \u003d \"Adding a State Message to the Sequence \"\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\tpayload \u003d {\"messageType\":\"StateChanged\"}\n\tsystem.perspective.sendMessage(\"measurementTab_addRow\",payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/control_point" + } + }, + "primary": false, + "text": "State" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\tMsg \u003d \"Adding a Mode Message to the Sequence \"\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\tpayload \u003d {\"messageType\":\"ModeChanged\"}\n\tsystem.perspective.sendMessage(\"measurementTab_addRow\",payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/control_point" + } + }, + "primary": false, + "text": "Mode" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tMsg \u003d \"Adding a Event Message to the Sequence \"\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tpayload \u003d {\"messageType\":\"Event\"}\n\tsystem.perspective.sendMessage(\"measurementTab_addRow\",payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/control_point" + } + }, + "primary": false, + "text": "Event" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tMsg \u003d \"Adding a Measurement Message to the Sequence \"\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tpayload \u003d {\"messageType\":\"MeasurementEvent\"}\n\tsystem.perspective.sendMessage(\"measurementTab_addRow\",payload)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_2" + }, + "position": { + "basis": "140px" + }, + "props": { + "image": { + "icon": { + "path": "material/control_point" + } + }, + "primary": false, + "text": "Measurement" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "500px", + "grow": 1, + "shrink": 0 + }, + "props": { + "justify": "space-around", + "style": { + "marginLeft": "10px", + "marginRight": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "props": { + "style": { + "fontWeight": "ClearAll", + "min-width": "value" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "text": "Row of last message sent:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TextField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.last_message_index" + }, + "type": "property" + } + } + }, + "props": { + "deferUpdates": false, + "enabled": false, + "style": { + "max-width": "50px", + "textAlign": "center" + } + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "250px", + "shrink": 0 + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "props": { + "style": { + "fontWeight": "ClearAll", + "min-width": "value" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tMsg \u003d \"Removing All Messages from the Sequence\"\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tsystem.perspective.sendMessage(\"ClearAll\", None , \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ClearAll", + "tooltip": { + "enabled": true, + "text": "Clear All" + } + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "image": { + "icon": { + "path": "material/delete_forever" + } + }, + "primary": false, + "style": { + "marginLeft": "15px" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px", + "shrink": 0 + }, + "props": { + "justify": "space-around", + "style": { + "margin": "5px", + "overflow": "visible" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "margin": "5px" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/resource.json new file mode 100644 index 0000000..cce91a0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "54ebbae3b268c42e1b6200e1128a11bfc677dfcb0d5f82a8803489d354a85aff" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/thumbnail.png new file mode 100644 index 0000000..cecbc07 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/view.json new file mode 100644 index 0000000..242366a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/view.json @@ -0,0 +1,198 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 301, + "width": 493 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "text": "alarms.csv" + }, + "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": { + "basis": "200px" + }, + "props": { + "style": { + "classes": "", + "margin": "10px" + }, + "supportedFileTypes": [ + "csv" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "style": { + "margin": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "text": "sources.csv" + }, + "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": { + "basis": "200px" + }, + "props": { + "style": { + "classes": "", + "margin": "10px" + }, + "supportedFileTypes": [ + "csv" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "style": { + "margin": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "text": "Pick up where you left off ?" + }, + "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": { + "basis": "200px" + }, + "props": { + "style": { + "classes": "", + "margin": "10px" + }, + "supportedFileTypes": [ + "csv" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "style": { + "margin": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/resource.json new file mode 100644 index 0000000..31e768b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b7dfda241687801792f734523b88fc6890e6990126f2fe116982f00de21b982c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/thumbnail.png new file mode 100644 index 0000000..41bcc9f Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/view.json new file mode 100644 index 0000000..7db571c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/view.json @@ -0,0 +1,242 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 155, + "width": 1910 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "233px" + }, + "props": { + "text": "Console Log", + "textStyle": { + "fontWeight": "bold", + "padding": "5px", + "textDecoration": "underline" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpayload \u003d {}\n\tsystem.perspective.sendMessage(\"clearFeedback\" , payload , \"page\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "40px" + }, + "props": { + "image": { + "icon": { + "path": "material/delete_forever" + } + }, + "primary": false, + "style": { + "borderStyle": "solid" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-between", + "style": { + "paddingBottom": "5px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Value", + "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": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "Main-Views/Commissioning Tool/Message", + "visible": true, + "width": "100px" + } + ], + "data": [ + { + "Value": { + "Msg": "", + "Timestamp": "" + } + } + ], + "enableHeader": false, + "pager": { + "bottom": false + }, + "rows": { + "subviewExpansionMode": "single" + }, + "selection": { + "enableRowSelection": false + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "clearFeedback", + "pageScope": true, + "script": "\t# implement your handler here\n\t\n\tself.props.data \u003d []", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "addFeedback", + "pageScope": true, + "script": "\t# implement your handler here\n\t\n\trecord \u003d {\n\t \"Value\": {\n\t \"Timestamp\": str(system.date.now()),\n\t \"Msg\": payload[\"Msg\"]\n\t }\n\t}\n\tself.props.data.insert(0, record)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px", + "grow": 1, + "shrink": 0 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "padding": "5px" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/resource.json new file mode 100644 index 0000000..04e17de --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "32b82ca7b252b327df407ecfd98c0e7ec7b5af5101b1615c9dc626fa38768da1" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/thumbnail.png new file mode 100644 index 0000000..d587729 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/view.json new file mode 100644 index 0000000..880cdb0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/view.json @@ -0,0 +1,778 @@ +{ + "custom": {}, + "params": { + "params": "value" + }, + "propConfig": { + "params.params": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "display": false + }, + "props": { + "text": "Invalid Device List Data . Make sure format is correct E.g [\"\u003cPLCiD\u003e\", \"\u003cPLCiD\u003e\"]" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "device-list-error", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.position.display \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/view_list", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "129px", + "grow": 1 + }, + "props": { + "style": { + "marginLeft": "10px" + }, + "text": "Add Detailed View", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "20px", + "fontWeight": "bolder", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "129px" + }, + "props": { + "style": { + "marginLeft": "0px" + }, + "text": "View", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "Device": "", + "tagPath": "Configuration/FC" + }, + "meta": { + "name": "TextField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"update-view-data\", currentValue.value)" + } + } + }, + "props": { + "placeholder": "\u003cView Id\u003e" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "missing-data", + "pageScope": true, + "script": "\t# implement your handler here\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "130px" + }, + "props": { + "style": { + "marginLeft": "0px" + }, + "text": "Device List :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "dataToAdd": "[\"PLC01\"]", + "key": "prefix", + "tagPath": "Configuration/DetailedViews" + }, + "meta": { + "name": "TextField_0" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "onChange": { + "enabled": null, + "script": "\timport ast\n\t\t\n\tdef is_valid_list(s):\n\t try:\n\t # Try to evaluate the string\n\t result \u003d ast.literal_eval(s)\n\t # Check if the result is a list\n\t return isinstance(result, list)\n\t except (ValueError, SyntaxError):\n\t # If there is a ValueError or SyntaxError, the string is not a valid list\n\t return False\n\n\t\n\tif is_valid_list(currentValue.value):\n\t\tself.custom.dataToAdd \u003d currentValue.value\n\t\tsystem.perspective.sendMessage(\"update-devicelist-data\", currentValue.value)\n\telse:\n\t\tsystem.perspective.sendMessage(\"update-devicelist-data\", \"\")\n\t\tsystem.perspective.print(\"Not a valid list \")\n\t\n\tsystem.perspective.sendMessage(\"device-list-error\", is_valid_list(currentValue.value))" + } + } + }, + "props": { + "placeholder": "[\"PLC02\", \"PLC03\"]" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Checkbox" + }, + "position": { + "basis": "130px" + }, + "propConfig": { + "props.selected": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"multiple_selection\", payload\u003dcurrentValue.value)" + } + } + }, + "props": { + "text": "Upload" + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "data": { + "BOB": [ + "THE", + "NOB" + ], + "FSC1": [ + "FSC1" + ], + "FSC2": [ + "FSC2" + ], + "FSC_Cells": [ + "FSC_Cells" + ], + "FSC_Induct_1-4": [ + "FSC_Induct_1-4" + ], + "FSC_Induct_5-8": [ + "FSC10" + ], + "PLC01": [ + "PLC01" + ], + "PLC02": [ + "PLC02", + "PLC98" + ], + "PLC03": [ + "PLC03" + ], + "PLC06": [ + "PLC06", + "PLC07" + ], + "PLC08": [ + "PLC08", + "PLC99" + ], + "PLC09": [ + "PLC09" + ], + "PLC09_Receiving2": [ + "PLC09_Receiving2" + ], + "PLC09_Receiving3": [ + "PLC09_Receiving3" + ], + "PLC1000": [ + "PLC1000" + ], + "PLC1000_Receiving4": [ + "PLC1000_Receiving4" + ], + "PLC1301": [ + "ARSAW1301" + ], + "PLC1302": [ + "ARSAW1302" + ], + "PLC1303": [ + "ARSAW1303" + ], + "PLC1304": [ + "ARSAW1304" + ], + "PLC1305": [ + "ARSAW1305" + ], + "PLC1306": [ + "ARSAW1306" + ], + "PLC1307": [ + "ARSAW1307" + ], + "PLC1308": [ + "ARSAW1308" + ], + "PLC1309": [ + "ARSAW1309" + ], + "PLC1310": [ + "ARSAW1310" + ], + "PLC1311": [ + "ARSAW1311" + ], + "PLC1312": [ + "ARSAW1312" + ], + "PLC13_SC1": [ + "PLC13" + ], + "PLC13_SC2": [ + "PLC13_SC2" + ], + "PLC14": [ + "PLC14" + ], + "PLC1501": [ + "ARSAW1501" + ], + "PLC1502": [ + "ARSAW1502" + ], + "PLC1503": [ + "ARSAW1503" + ], + "PLC1504": [ + "ARSAW1504" + ], + "PLC1505": [ + "ARSAW1505" + ], + "PLC1506": [ + "ARSAW1506" + ], + "PLC1507": [ + "ARSAW1507" + ], + "PLC1508": [ + "ARSAW1508" + ], + "PLC1509": [ + "ARSAW1509" + ], + "PLC1510": [ + "ARSAW1510" + ], + "PLC1511": [ + "ARSAW1511" + ], + "PLC1512": [ + "ARSAW1512" + ], + "PLC15_SC1": [ + "PLC15" + ], + "PLC15_SC2": [ + "PLC15_SC2" + ], + "PLC16": [ + "PLC16" + ], + "PLC20_Tote1-3": [ + "PLC20" + ], + "PLC20_Tote4-8": [ + "PLC20_Tote4-8" + ], + "PLC21_22": [ + "PLC21", + "PLC22" + ], + "PLC23": [ + "PLC23" + ], + "PLC24": [ + "PLC24", + "PLC97" + ], + "PLC25": [ + "PLC25" + ], + "PLC26": [ + "PLC26" + ], + "PLC27": [ + "PLC27" + ], + "PLC30": [ + "PLC30" + ], + "PLC31": [ + "PLC31" + ], + "PLC32": [ + "PLC32" + ], + "PLC60": [ + "PLC60" + ], + "PLC61": [ + "PLC61" + ], + "PLC69": [ + "PLC69" + ], + "PLC70": [ + "PLC70", + "PLC71" + ], + "PLC80_81_82": [ + "PLC80", + "PLC81", + "PLC82" + ] + }, + "fileString": "\"PageId\",\"DeviceList\"\n\"PLC1301\",\"ARSAW1301\"\n\"PLC03\",\"PLC03\"\n\"PLC1302\",\"ARSAW1302\"\n\"PLC01\",\"PLC01\"\n\"PLC02\",\"PLC02#PLC98\"\n\"PLC1305\",\"ARSAW1305\"\n\"PLC1503\",\"ARSAW1503\"\n\"PLC08\",\"PLC08#PLC99\"\n\"PLC1306\",\"ARSAW1306\"\n\"PLC1504\",\"ARSAW1504\"\n\"PLC1501\",\"ARSAW1501\"\n\"PLC1303\",\"ARSAW1303\"\n\"PLC06\",\"PLC06#PLC07\"\n\"PLC1304\",\"ARSAW1304\"\n\"PLC1502\",\"ARSAW1502\"\n\"PLC09_Receiving3\",\"PLC09_Receiving3\"\n\"PLC09_Receiving2\",\"PLC09_Receiving2\"\n\"PLC1309\",\"ARSAW1309\"\n\"PLC1507\",\"ARSAW1507\"\n\"PLC1508\",\"ARSAW1508\"\n\"PLC1505\",\"ARSAW1505\"\n\"PLC1307\",\"ARSAW1307\"\n\"PLC09\",\"PLC09\"\n\"PLC1308\",\"ARSAW1308\"\n\"PLC1506\",\"ARSAW1506\"\n\"PLC20_Tote1-3\",\"PLC20\"\n\"PLC1509\",\"ARSAW1509\"\n\"PLC14\",\"PLC14\"\n\"PLC80_81_82\",\"PLC80#PLC81#PLC82\"\n\"PLC16\",\"PLC16\"\n\"FSC_Induct_1-4\",\"FSC_Induct_1-4\"\n\"FSC_Induct_5-8\",\"FSC10\"\n\"FSC_Cells\",\"FSC_Cells\"\n\"PLC21_22\",\"PLC21#PLC22\"\n\"PLC25\",\"PLC25\"\n\"PLC69\",\"PLC69\"\n\"PLC26\",\"PLC26\"\n\"PLC23\",\"PLC23\"\n\"PLC24\",\"PLC24#PLC97\"\n\"PLC27\",\"PLC27\"\n\"PLC61\",\"PLC61\"\n\"PLC60\",\"PLC60\"\n\"PLC1000\",\"PLC1000\"\n\"PLC20_Tote4-8\",\"PLC20_Tote4-8\"\n\"PLC13_SC2\",\"PLC13_SC2\"\n\"PLC13_SC1\",\"PLC13\"\n\"PLC1312\",\"ARSAW1312\"\n\"PLC1510\",\"ARSAW1510\"\n\"PLC1511\",\"ARSAW1511\"\n\"PLC1310\",\"ARSAW1310\"\n\"PLC1311\",\"ARSAW1311\"\n\"PLC1512\",\"ARSAW1512\"\n\"PLC70\",\"PLC70#PLC71\"\n\"PLC32\",\"PLC32\"\n\"PLC30\",\"PLC30\"\n\"PLC31\",\"PLC31\"\n\"FSC1\",\"FSC1\"\n\"PLC15_SC2\",\"PLC15_SC2\"\n\"FSC2\",\"FSC2\"\n\"PLC1000_Receiving4\",\"PLC1000_Receiving4\"\n\"PLC15_SC1\",\"PLC15\"\n", + "list_data": [ + "PLC1301", + "ARSAW1301\r", + "PLC03", + "PLC03\r", + "PLC1302", + "ARSAW1302\r", + "PLC01", + "PLC01\r", + "PLC02", + "PLC02#PLC98\r", + "PLC1305", + "ARSAW1305\r", + "PLC1503", + "ARSAW1503\r", + "PLC08", + "PLC08#PLC99\r", + "PLC1306", + "ARSAW1306\r", + "PLC1504", + "ARSAW1504\r", + "PLC1501", + "ARSAW1501\r", + "PLC1303", + "ARSAW1303\r", + "PLC06", + "PLC06#PLC07\r", + "PLC1304", + "ARSAW1304\r", + "PLC1502", + "ARSAW1502\r", + "PLC09_Receiving3", + "PLC09_Receiving3\r", + "PLC09_Receiving2", + "PLC09_Receiving2\r", + "PLC1309", + "ARSAW1309\r", + "PLC1507", + "ARSAW1507\r", + "PLC1508", + "ARSAW1508\r", + "PLC1505", + "ARSAW1505\r", + "PLC1307", + "ARSAW1307\r", + "PLC09", + "PLC09\r", + "PLC1308", + "ARSAW1308\r", + "PLC1506", + "ARSAW1506\r", + "PLC20_Tote1-3", + "PLC20\r", + "PLC1509", + "ARSAW1509\r", + "PLC14", + "PLC14\r", + "PLC80_81_82", + "PLC80#PLC81#PLC82\r", + "PLC16", + "PLC16\r", + "FSC_Induct_1-4", + "FSC_Induct_1-4\r", + "FSC_Induct_5-8", + "FSC10\r", + "FSC_Cells", + "FSC_Cells\r", + "PLC21_22", + "PLC21#PLC22\r", + "PLC25", + "PLC25\r", + "PLC69", + "PLC69\r", + "PLC26", + "PLC26\r", + "PLC23", + "PLC23\r", + "PLC24", + "PLC24#PLC97\r", + "PLC27", + "PLC27\r", + "PLC61", + "PLC61\r", + "PLC60", + "PLC60\r", + "PLC1000", + "PLC1000\r", + "PLC20_Tote4-8", + "PLC20_Tote4-8\r", + "PLC13_SC2", + "PLC13_SC2\r", + "PLC13_SC1", + "PLC13\r", + "PLC1312", + "ARSAW1312\r", + "PLC1510", + "ARSAW1510\r", + "PLC1511", + "ARSAW1511\r", + "PLC1310", + "ARSAW1310\r", + "PLC1311", + "ARSAW1311\r", + "PLC1512", + "ARSAW1512\r", + "PLC70", + "PLC70#PLC71\r", + "PLC32", + "PLC32\r", + "PLC30", + "PLC30\r", + "PLC31", + "PLC31\r", + "FSC1", + "FSC1\r", + "PLC15_SC2", + "PLC15_SC2\r", + "FSC2", + "FSC2\r", + "PLC1000_Receiving4", + "PLC1000_Receiving4\r", + "PLC15_SC1", + "PLC15\r", + "BOB", + "THE#NOB" + ], + "testParsing": true + }, + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\t\n#\tdef compare_dicts(dict1, dict2):\n#\t # Check if dictionaries have the same keys\n#\t if set(dict1.keys()) !\u003d set(dict2.keys()):\n#\t return False\n#\t \n#\t # Check if values for each key are equal\n#\t for key in dict1:\n#\t if dict1[key] !\u003d dict2[key]:\n#\t \tsystem.perspective.print(\"Uploaded data Value : %s\"%dict1[key])\n#\t \tsystem.perspective.print(\"Tag data Value : %s\"%dict2[key])\n#\t \treturn False\n#\t \n#\t # If all values are equal, return True\n#\t return True\n#\t\n#\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n#\twhid \u003d self.session.custom.fc\n#\tdata \u003d{}\n#\t\n#\tdef convert_csv_string_list(string):\n#\t\t# removes new line chars and \n#\t\treturn string.replace(\"\\n\",\",\").replace(\"\\\"\",\"\").split(\",\")[2:]\n#\t\n#\tdef convert_dict_value_to_list(string):\n#\t\tdevice_list \u003d []\n#\t\tfor i in string.replace(\"#\", \",\").split(\",\"):\n#\t\t\tdevice_list.append(i.strip())\n#\t\treturn device_list\n#\t\n#\tlist_data \u003d convert_csv_string_list(event.file.getString())\n#\n#\tself.custom.list_data \u003d list_data\n#\t\n#\tdata \u003d {}\n#\tfor i in range(0, len(list_data),2):\n#\t\n#\t\tdata[list_data[i]]\u003d convert_dict_value_to_list(list_data[i+1])\n#\n#\tself.custom.data \u003d data\n#\tif self.custom.testParsing:\n#\t\ttag_dict \u003dsystem.util.jsonDecode(system.tag.readBlocking(\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid)[0].value)\n#\t\t\n#\t\tsystem.perspective.print(\"TestResult : %s\"%compare_dicts(data, tag_dict))\n#\n#\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid], system.util.jsonEncode(data))\n\n\twhid \u003d self.session.custom.fc\n\tFileHandler.uploader.add_detailed_view_btn_code(whid, event)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "basis": "150px", + "display": false + }, + "props": { + "style": { + "classes": "" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.position.display \u003d payload ", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.fileupload" + }, + { + "custom": { + "rowToAdd": { + "deviceList": "", + "view": "" + } + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%(whid)\n\t\n\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking(tagPath)[0].value)\n\tself.custom.tagData.append(self.custom.rowToAdd)\n\t\n\tdata \u003d []\n\tfor i in system.util.jsonDecode(self.custom.rowToAdd[\"deviceList\"]):\n\t\tdata.append(i)\n\t\n\ttagData[self.custom.rowToAdd[\"view\"]] \u003d data\n\t\t\t\n\t\n\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tagData)])\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button", + "tooltip": { + "enabled": true, + "text": "Missing Data for : [u\u0027deviceList\u0027, u\u0027view\u0027]" + } + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" + }, + "transforms": [ + { + "code": "\treturn [{\"PageId\":k,\"DeviceList\":v}for k,v in system.util.jsonDecode(value).items()]", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "this.custom.rowToAdd" + }, + "transforms": [ + { + "code": "\n\tmissing_data \u003d []\n\tfor k, v in value.items():\n\t\tif not v:\n\t\t\tmissing_data.append(k)\n\t\n\tif missing_data:\n\t\tenabled \u003d False\n\t\tmsg \u003d \"Missing Data for : %s\"%missing_data\n\telse:\n\t\tenabled \u003d True\n\t\tmsg \u003d \"\"\n\t\n\tself.meta.tooltip.text \u003d msg \n\t\n\treturn enabled\n\t", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/add_circle" + }, + "position": "right" + }, + "primary": false, + "text": "Submit" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-devicelist-data", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"deviceList\"] \u003d payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-view-data", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"view\"] \u003d payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.position.display \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_5" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "margin-top": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/resource.json new file mode 100644 index 0000000..512b765 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3dcab5296f96e3c3206a1b8c3a8fa3c399921994f1d19d880258ffa9f2a88b53" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/thumbnail.png new file mode 100644 index 0000000..fc50d9c Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/view.json new file mode 100644 index 0000000..a625894 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/view.json @@ -0,0 +1,1001 @@ +{ + "custom": {}, + "params": { + "params": "value" + }, + "propConfig": { + "params.params": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/settings_applications", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "129px", + "grow": 1 + }, + "props": { + "style": { + "marginLeft": "10px" + }, + "text": "Add Device", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "20px", + "fontWeight": "bolder", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "129px" + }, + "props": { + "style": { + "marginLeft": "0px" + }, + "text": "Device :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "Device": "", + "tagPath": "Configuration/FC" + }, + "meta": { + "name": "TextField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"update-device-data\", currentValue.value)" + } + } + }, + "props": { + "placeholder": "\u003cDevice Id\u003e" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "missing-data", + "pageScope": true, + "script": "\t# implement your handler here\n\t", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "130px" + }, + "props": { + "style": { + "marginLeft": "0px" + }, + "text": "Area :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "key": "prefix", + "tagPath": "Configuration/aws" + }, + "meta": { + "name": "TextField_0" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"update-area-data\", currentValue.value)" + } + } + }, + "props": { + "placeholder": "\u003cArea Id\u003e" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "130px" + }, + "props": { + "style": { + "marginLeft": "0px" + }, + "text": "SubArea :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "key": "prefix", + "tagPath": "Configuration/aws" + }, + "meta": { + "name": "TextField_0" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.text": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"update-subarea-data\", currentValue.value)" + } + } + }, + "props": { + "placeholder": "\u003cSubArea Id\u003e" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Checkbox" + }, + "position": { + "basis": "130px" + }, + "propConfig": { + "props.selected": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"multiple_selection\", payload\u003dcurrentValue.value)" + } + } + }, + "props": { + "style": { + "margin-left": "0px" + }, + "text": "Upload" + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "rowToAdd": { + "Area": "", + "Device": "", + "SubArea": "" + } + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%(whid)\n\tself.custom.tagData.append(self.custom.rowToAdd)\n\t\n\ttag \u003d {}\n\tfor i in self.custom.tagData:\n\t\ttag[i[\"Device\"]]\u003d {\"Area\": i[\"Area\"], \"SubArea\":i[\"SubArea\"]}\n\t\t\n\t\n\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tag)])\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button", + "tooltip": { + "enabled": true, + "text": "Missing Data for : [u\u0027Area\u0027, u\u0027SubArea\u0027, u\u0027Device\u0027]" + } + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "this.custom.rowToAdd" + }, + "transforms": [ + { + "code": "\n\tmissing_data \u003d []\n\tfor k, v in value.items():\n\t\tif not v:\n\t\t\tmissing_data.append(k)\n\t\n\tif missing_data:\n\t\tenabled \u003d False\n\t\tmsg \u003d \"Missing Data for : %s\"%missing_data\n\telse:\n\t\tenabled \u003d True\n\t\tmsg \u003d \"\"\n\t\n\tself.meta.tooltip.text \u003d msg \n\t\n\treturn enabled\n\t", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/add_circle" + }, + "position": "right" + }, + "primary": false, + "text": "Submit" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-device-data", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"Device\"] \u003d payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-area-data", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"Area\"] \u003d payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-subarea-data", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"SubArea\"] \u003d payload", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.position.display \u003d not payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "custom": { + "data": { + "ARSAW1301": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1302": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1303": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1304": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1305": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1306": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1307": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1308": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1309": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1310": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1311": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1312": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1501": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1502": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1503": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1504": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1505": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1506": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1507": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1508": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1509": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1510": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1511": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "ARSAW1512": { + "Area": "AR FLOOR", + "SubArea": "ARSAW\r" + }, + "FSC1": { + "Area": "", + "SubArea": "\r" + }, + "FSC10": { + "Area": "OUTBOUND", + "SubArea": "FSC\r" + }, + "FSC2": { + "Area": "", + "SubArea": "\r" + }, + "FSC_Cells": { + "Area": "", + "SubArea": "\r" + }, + "FSC_Induct_1-4": { + "Area": "", + "SubArea": "\r" + }, + "PLC01": { + "Area": "OUTBOUND", + "SubArea": "SHIP\r" + }, + "PLC02": { + "Area": "OUTBOUND", + "SubArea": "SHIP\r" + }, + "PLC03": { + "Area": "OUTBOUND", + "SubArea": "KO \u0026 REJECT\r" + }, + "PLC06": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER\r" + }, + "PLC07": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER\r" + }, + "PLC08": { + "Area": "OUTBOUND", + "SubArea": "TOTE FEED\r" + }, + "PLC09": { + "Area": "INBOUND", + "SubArea": "RECEIVING\r" + }, + "PLC09_Receiving2": { + "Area": "", + "SubArea": "\r" + }, + "PLC09_Receiving3": { + "Area": "", + "SubArea": "\r" + }, + "PLC1000": { + "Area": "INBOUND", + "SubArea": "RECEIVING\r" + }, + "PLC1000_Receiving4": { + "Area": "", + "SubArea": "\r" + }, + "PLC13": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P2\r" + }, + "PLC13_SC2": { + "Area": "", + "SubArea": "\r" + }, + "PLC14": { + "Area": "", + "SubArea": "\r" + }, + "PLC15": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P3\r" + }, + "PLC15_SC2": { + "Area": "", + "SubArea": "\r" + }, + "PLC16": { + "Area": "AR FLOOR", + "SubArea": "PICK TO REBIN P3\r" + }, + "PLC20": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TOTE 1-3\r" + }, + "PLC20_Tote4-8": { + "Area": "", + "SubArea": "\r" + }, + "PLC21": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER\r" + }, + "PLC22": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER\r" + }, + "PLC23": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TRAY FEED\r" + }, + "PLC24": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 1-2\r" + }, + "PLC25": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 3-4\r" + }, + "PLC26": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 5-6\r" + }, + "PLC27": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 7-8\r" + }, + "PLC30": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 1-4\r" + }, + "PLC31": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 5-8\r" + }, + "PLC32": { + "Area": "OUTBOUND", + "SubArea": "AFE1 EMP. TOTE\r" + }, + "PLC60": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 1\r" + }, + "PLC61": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 2\r" + }, + "PLC69": { + "Area": "OUTBOUND", + "SubArea": "GIFT WRAP\r" + }, + "PLC70": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP\r" + }, + "PLC71": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP\r" + }, + "PLC80": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING\r" + }, + "PLC81": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING\r" + }, + "PLC82": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING\r" + }, + "PLC97": { + "Area": "SAFETY PLC", + "SubArea": "\r" + }, + "PLC98": { + "Area": "SAFETY PLC", + "SubArea": "\r" + }, + "PLC99": { + "Area": "SAFETY PLC", + "SubArea": "\r" + }, + "THE": { + "Area": "BOB", + "SubArea": "NOB" + } + }, + "list_data": [ + "OUTBOUND", + "PLC03", + "KO \u0026 REJECT\r", + "OUTBOUND", + "PLC01", + "SHIP\r", + "OUTBOUND", + "PLC02", + "SHIP\r", + "OUTBOUND", + "PLC07", + "TOTE ROUTER\r", + "OUTBOUND", + "PLC08", + "TOTE FEED\r", + "OUTBOUND", + "PLC06", + "TOTE ROUTER\r", + "OUTBOUND", + "PLC81", + "SMART PACKING\r", + "OUTBOUND", + "PLC82", + "SMART PACKING\r", + "", + "PLC09_Receiving3", + "\r", + "", + "PLC09_Receiving2", + "\r", + "INBOUND", + "PLC09", + "RECEIVING\r", + "", + "PLC14", + "\r", + "AR FLOOR", + "PLC15", + "ARSAW P3\r", + "AR FLOOR", + "PLC13", + "ARSAW P2\r", + "AR FLOOR", + "PLC16", + "PICK TO REBIN P3\r", + "", + "FSC_Induct_1-4", + "\r", + "SAFETY PLC", + "PLC98", + "\r", + "SAFETY PLC", + "PLC99", + "\r", + "SAFETY PLC", + "PLC97", + "\r", + "OUTBOUND", + "FSC10", + "FSC\r", + "", + "FSC_Cells", + "\r", + "OUTBOUND", + "PLC25", + "AFE1 WALL 3-4\r", + "OUTBOUND", + "PLC69", + "GIFT WRAP\r", + "OUTBOUND", + "PLC26", + "AFE1 WALL 5-6\r", + "OUTBOUND", + "PLC23", + "AFE1 TRAY FEED\r", + "OUTBOUND", + "PLC24", + "AFE1 WALL 1-2\r", + "OUTBOUND", + "PLC27", + "AFE1 WALL 7-8\r", + "AR FLOOR", + "ARSAW1310", + "ARSAW\r", + "OUTBOUND", + "PLC61", + "S.PACKING 2\r", + "AR FLOOR", + "ARSAW1312", + "ARSAW\r", + "AR FLOOR", + "ARSAW1510", + "ARSAW\r", + "AR FLOOR", + "ARSAW1311", + "ARSAW\r", + "OUTBOUND", + "PLC60", + "S.PACKING 1\r", + "AR FLOOR", + "ARSAW1512", + "ARSAW\r", + "OUTBOUND", + "PLC21", + "AFE TRAY ROUTER\r", + "AR FLOOR", + "ARSAW1511", + "ARSAW\r", + "OUTBOUND", + "PLC22", + "AFE TRAY ROUTER\r", + "INBOUND", + "PLC1000", + "RECEIVING\r", + "OUTBOUND", + "PLC20", + "AFE1 TOTE 1-3\r", + "AR FLOOR", + "ARSAW1307", + "ARSAW\r", + "AR FLOOR", + "ARSAW1505", + "ARSAW\r", + "AR FLOOR", + "ARSAW1306", + "ARSAW\r", + "AR FLOOR", + "ARSAW1504", + "ARSAW\r", + "AR FLOOR", + "ARSAW1309", + "ARSAW\r", + "AR FLOOR", + "ARSAW1507", + "ARSAW\r", + "AR FLOOR", + "ARSAW1308", + "ARSAW\r", + "AR FLOOR", + "ARSAW1506", + "ARSAW\r", + "AR FLOOR", + "ARSAW1509", + "ARSAW\r", + "", + "PLC20_Tote4-8", + "\r", + "AR FLOOR", + "ARSAW1508", + "ARSAW\r", + "", + "PLC13_SC2", + "\r", + "AR FLOOR", + "ARSAW1301", + "ARSAW\r", + "OUTBOUND", + "PLC70", + "TRANSSHIP\r", + "OUTBOUND", + "PLC71", + "TRANSSHIP\r", + "AR FLOOR", + "ARSAW1303", + "ARSAW\r", + "AR FLOOR", + "ARSAW1501", + "ARSAW\r", + "OUTBOUND", + "PLC32", + "AFE1 EMP. TOTE\r", + "AR FLOOR", + "ARSAW1302", + "ARSAW\r", + "AR FLOOR", + "ARSAW1305", + "ARSAW\r", + "AR FLOOR", + "ARSAW1503", + "ARSAW\r", + "OUTBOUND", + "PLC30", + "AFE1 PACK 1-4\r", + "AR FLOOR", + "ARSAW1304", + "ARSAW\r", + "AR FLOOR", + "ARSAW1502", + "ARSAW\r", + "OUTBOUND", + "PLC31", + "AFE1 PACK 5-8\r", + "OUTBOUND", + "PLC80", + "SMART PACKING\r", + "", + "FSC1", + "\r", + "", + "PLC15_SC2", + "\r", + "", + "FSC2", + "\r", + "", + "PLC1000_Receiving4", + "\r", + "BOB", + "THE", + "NOB" + ] + }, + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "#\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n#\twhid \u003d self.session.custom.fc\n#\tdata \u003d{}\n#\tdef get_child():\n#\t\treturn {\n#\t\t\t\"Area\":\"\",\n#\t\t\t\"SubArea\":\"\"\n#\t\t}\n#\t\t\n#\tdef convert_csv_string_list(string):\n#\t\treturn string.replace(\"\\n\",\",\").replace(\"\\\"\",\"\").split(\",\")[3:]\n#\t\n#\tlist_data \u003d convert_csv_string_list(event.file.getString())\n#\tself.custom.list_data \u003d list_data\n#\tfor i in range(2, len(list_data),3):\n#\t\tchild \u003d get_child()\n#\t\tchild[\"Area\"] \u003d list_data[i-2]\n#\t\tchild[\"SubArea\"] \u003d list_data[i]\n#\t\tdata[list_data[i-1]]\u003d child\n#\n#\tself.custom.data \u003d data\n#\t\n#\t\n#\tvalues \u003d system.util.jsonEncode(data)\n#\t\n#\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid], values)\n#\t\n\twhid \u003d self.session.custom.fc\n\tFileHandler.uploader.add_device_btn_code(whid, event)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "basis": "150px", + "display": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "multiple_selection", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.position.display \u003d payload ", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "FlexContainer_4" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-around", + "style": { + "margin-top": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + }, + "wrap": "wrap" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/resource.json new file mode 100644 index 0000000..f855736 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "798ec4d6a3af6cc38484e1731369d853a8cdf312ff14e6af87589360f23d2041" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/thumbnail.png new file mode 100644 index 0000000..cfd4597 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/view.json new file mode 100644 index 0000000..805802c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/view.json @@ -0,0 +1,2408 @@ +{ + "custom": { + "Enable_input": false + }, + "params": {}, + "propConfig": { + "custom.Enable_input": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/edit_attributes", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "232px" + }, + "props": { + "style": { + "marginLeft": "10px" + }, + "text": "Configuration Tags", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "type": "ia.display.label" + }, + { + "custom": { + "dockOpened": true + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tdevice_entry \u003d {\"Device\":\"\",\"Area\":\"\",\"SubArea\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/TagViewer\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\t\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\t\n\t\t\n\t\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon_0" + }, + "position": { + "basis": "30px" + }, + "props": { + "path": "material/local_offer", + "style": { + "margin": "5px" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "57px" + }, + "props": { + "text": "FC:", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "tagPath": "Configuration/FC" + }, + "meta": { + "name": "TextField" + }, + "position": { + "basis": "175px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + }, + "props.placeholder": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/FC" + }, + "transforms": [ + { + "code": "\tif value :\n\t\treturn value\n\telse:\n\t\treturn \"No Value Configured\"", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/FC" + }, + "transforms": [ + { + "code": "\treturn value", + "type": "script" + } + ], + "type": "tag" + }, + "onChange": { + "enabled": null, + "script": "\tif currentValue.value:\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(self.session.custom.fc,self.custom.tagPath)\n\t\tsystem.perspective.print(tagPath)\n\t\tres \u003d system.tag.writeBlocking([tagPath], [currentValue.value])\n\t\tsystem.perspective.print(res)" + } + } + }, + "props": { + "deferUpdates": false + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "107px" + }, + "props": { + "style": { + "marginLeft": "25px" + }, + "text": "AWS Prefix :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "key": "prefix", + "tagPath": "Configuration/aws" + }, + "meta": { + "name": "TextField_0" + }, + "position": { + "basis": "175px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + }, + "props.placeholder": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" + }, + "transforms": [ + { + "code": "\t\n\t\n\tvalue \u003d system.util.jsonDecode(value)\n\t\n\tif value.get(\"prefix\"):\n\t\treturn value[\"prefix\"] \n\telse:\n\t\treturn \"No Value Configured\"", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" + }, + "transforms": [ + { + "code": "\treturn system.util.jsonDecode(value).get(\"prefix\", None)", + "type": "script" + } + ], + "type": "tag" + }, + "onChange": { + "enabled": null, + "script": "\tif currentValue.value:\n\t\tfc \u003d self.session.custom.fc\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(fc, self.custom.tagPath)\n\t\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([tagPath])[0].value)\n\t\ttry:\n\t\t\ttagData[self.custom.key] \u003d currentValue.value.strip()\n\t\texcept Exception as e :\n\t\t\tsystem.perspective.print(e)\n\t\t\treturn \n\t\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tagData)])\n\t\t\t\n\t\t\t" + } + } + }, + "props": { + "deferUpdates": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "initialise-values", + "pageScope": true, + "script": "\t# implement your handler here\n\tsystem.perspective.print(payload)", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "115px" + }, + "props": { + "style": { + "marginLeft": "25px" + }, + "text": "AWS Region :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "custom": { + "key": "region", + "tagPath": "Configuration/aws" + }, + "meta": { + "name": "TextField_2" + }, + "position": { + "basis": "175px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + }, + "props.placeholder": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" + }, + "transforms": [ + { + "code": "\t\n\t\n\tvalue \u003d system.util.jsonDecode(value)\n\t\n\tif value.get(\"region\"):\n\t\treturn value[\"region\"] \n\telse:\n\t\treturn \"No Value Configured\"", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" + }, + "transforms": [ + { + "code": "\treturn system.util.jsonDecode(value).get(\"region\", None)", + "type": "script" + } + ], + "type": "tag" + }, + "onChange": { + "enabled": null, + "script": "\tif currentValue.value:\n\t\tfc \u003d self.session.custom.fc\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(fc, self.custom.tagPath)\n\t\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([tagPath])[0].value)\n\t\ttry:\n\t\t\ttagData[self.custom.key] \u003d currentValue.value.strip()\n\t\texcept Exception as e :\n\t\t\tsystem.perspective.print(e)\n\t\t\treturn \n\t\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tagData)])\n\t\t\t\n\t\t\t" + } + } + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "120px" + }, + "props": { + "style": { + "marginLeft": "25px" + }, + "text": "Backend Type :", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "175px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/BACKEND_EDGE_DEVICE" + }, + "transforms": [ + { + "code": "\tif value:\n\t\treturn value\n\t", + "type": "script" + } + ], + "type": "tag" + }, + "onChange": { + "enabled": null, + "script": "\twhid \u003d self.session.custom.fc\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/BACKEND_EDGE_DEVICE\"%whid], [currentValue.value])" + } + } + }, + "props": { + "options": [ + { + "label": "Edge To Cloud", + "value": "e2c" + }, + { + "label": "Quattro", + "value": "quattro" + }, + { + "label": "DataBridge", + "value": "databridge" + } + ], + "placeholder": { + "text": "No Value Configured" + }, + "search": { + "enabled": false + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "marginLeft": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "140px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/settings_applications", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "232px" + }, + "props": { + "style": { + "marginLeft": "10px" + }, + "text": "PLC Configuration", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\tif not self.view.custom.Enable_input:\n\t\treturn\n\tcolumn \u003d event.column\n\trow \u003d event.row\n\tself.props.data[row][column] \u003d event.value\n\trow_data \u003d self.props.data[row]\n\tsystem.perspective.print(row_data)\n\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid\n\ttag_data \u003d system.tag.readBlocking([tag_path])[0].value\n\ttag_data \u003d system.util.jsonDecode(tag_data)\n\t\n\tdef get_child():\n\t\treturn {\n\t\t\t\"Area\":\"\",\n\t\t\t\"SubArea\":\"\"\n\t\t}\n\t\n\tchild \u003d get_child()\n\tchild[\"Area\"] \u003d row_data[\"Area\"]\n\tchild[\"SubArea\"]\u003d row_data[\"SubArea\"]\n\t\n\ttag_data[row_data[\"Device\"]]\u003d child\n\tencoded_data \u003d system.util.jsonEncode(tag_data)\n\tsystem.tag.writeBlocking([tag_path], [encoded_data])\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "286px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "path": "this.custom.tagData" + }, + "type": "property" + } + }, + "props.selection.data": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"selected-plcs\", payload\u003dcurrentValue.value)" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "fontSize": "12px" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Area", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "fontSize": "12px" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "SubArea", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "fontSize": "12px" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "selection": { + "mode": "multiple interval" + }, + "style": { + "fontSize": "12px", + "marginLeft": "10px" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "add-device-entry", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.data.append(data)", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "update-plc-config", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.data \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.table" + }, + { + "children": [ + { + "custom": { + "dockOpened": true + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdevice_entry \u003d {\"Device\":\"\",\"Area\":\"\",\"SubArea\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/AddDevice\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "135px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/add_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px" + }, + "text": "Add Device" + }, + "type": "ia.input.button" + }, + { + "custom": { + "dataAfterRemoval": { + "ARSAW1301": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1302": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1303": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1304": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1305": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1306": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1307": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1308": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1309": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1310": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1311": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1312": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1501": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1502": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1503": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1504": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1505": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1506": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1507": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1508": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1509": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1510": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1511": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1512": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "FSC1": { + "Area": "", + "SubArea": "" + }, + "FSC10": { + "Area": "OUTBOUND", + "SubArea": "FSC" + }, + "FSC2": { + "Area": "", + "SubArea": "" + }, + "FSC_Cells": { + "Area": "", + "SubArea": "" + }, + "FSC_Induct_1-4": { + "Area": "", + "SubArea": "" + }, + "PLC01": { + "Area": "OUTBOUND", + "SubArea": "SHIP" + }, + "PLC02": { + "Area": "OUTBOUND", + "SubArea": "SHIP" + }, + "PLC03": { + "Area": "OUTBOUND", + "SubArea": "KO \u0026 REJECT" + }, + "PLC06": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER" + }, + "PLC07": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER" + }, + "PLC08": { + "Area": "OUTBOUND", + "SubArea": "TOTE FEED" + }, + "PLC09": { + "Area": "INBOUND", + "SubArea": "RECEIVING" + }, + "PLC09_Receiving2": { + "Area": "", + "SubArea": "" + }, + "PLC09_Receiving3": { + "Area": "", + "SubArea": "" + }, + "PLC1000": { + "Area": "INBOUND", + "SubArea": "RECEIVING" + }, + "PLC1000_Receiving4": { + "Area": "", + "SubArea": "" + }, + "PLC13": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P2" + }, + "PLC13_SC2": { + "Area": "", + "SubArea": "" + }, + "PLC14": { + "Area": "", + "SubArea": "" + }, + "PLC15": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P3" + }, + "PLC15_SC2": { + "Area": "", + "SubArea": "" + }, + "PLC16": { + "Area": "AR FLOOR", + "SubArea": "PICK TO REBIN P3" + }, + "PLC20": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TOTE 1-3" + }, + "PLC20_Tote4-8": { + "Area": "", + "SubArea": "" + }, + "PLC21": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER" + }, + "PLC22": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER" + }, + "PLC23": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TRAY FEED" + }, + "PLC24": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 1,2" + }, + "PLC25": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 3,4" + }, + "PLC26": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 5,6" + }, + "PLC27": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 7,8" + }, + "PLC30": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 1-4" + }, + "PLC31": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 5-8" + }, + "PLC32": { + "Area": "OUTBOUND", + "SubArea": "AFE1 EMP. TOTE" + }, + "PLC60": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 1" + }, + "PLC61": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 2" + }, + "PLC69": { + "Area": "OUTBOUND", + "SubArea": "GIFT WRAP" + }, + "PLC70": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP" + }, + "PLC71": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP" + }, + "PLC80": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC81": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC82": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC97": { + "Area": "SAFETY PLC", + "SubArea": "" + }, + "PLC98": { + "Area": "SAFETY PLC", + "SubArea": "" + }, + "PLC99": { + "Area": "SAFETY PLC", + "SubArea": "" + } + }, + "itemsToRemove": [] + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\twhid \u003d self.session.custom.fc\n\t\n\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid])[0].value) \n\t\n\tfor item in self.custom.itemsToRemove:\n\t\tresult \u003d tagData.pop(item[\"Device\"],None)\n\t\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid],system.util.jsonEncode(tagData))" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_2" + }, + "position": { + "basis": "156px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\treturn system.util.jsonDecode(value)", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/remove_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px", + "marginRight": "10px" + }, + "text": "Remove Device" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "selected-plcs", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.itemsToRemove \u003d payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\ttagPath\u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%self.session.custom.fc \n\t\t\n\tsystem.tag.writeBlocking(tagPath, \"{}\")\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0", + "visible": false + }, + "position": { + "basis": "135px", + "display": false + }, + "props": { + "image": { + "icon": { + "path": "material/remove_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px", + "marginRight": "10px" + }, + "text": "Clear" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\n\tFileHandler.downloader.download_file(\"Device_data.csv\", self.custom.tagData, FileHandler.downloader.device_data_converter)\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_3" + }, + "position": { + "basis": "135px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#377AAE", + "path": "material/cloud_download" + } + }, + "primary": false, + "style": { + "classes": "\n" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "marginBottom": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "414px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/view_list", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "232px" + }, + "props": { + "style": { + "marginLeft": "10px" + }, + "text": "Detailed View Mapping", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "16px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\timport ast\n\t\n\tif not self.view.custom.Enable_input:\n\t\treturn \n\t\t\n\tdef is_valid_list(s):\n\t try:\n\t # Try to evaluate the string\n\t result \u003d ast.literal_eval(s)\n\t # Check if the result is a list\n\t return isinstance(result, list)\n\t except (ValueError, SyntaxError):\n\t # If there is a ValueError or SyntaxError, the string is not a valid list\n\t return False\n\n\tcolumn \u003d event.column\n\trow \u003d event.row\n\tself.props.data[row][column] \u003d event.value\n\trow_data \u003d self.props.data[row]\n\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid\n\ttag_data \u003d system.tag.readBlocking([tag_path])[0].value\n\ttag_data \u003d system.util.jsonDecode(tag_data)\n\t\n\tif is_valid_list(event.value):\n\t\ttag_data[row_data[\"DetailedView\"]] \u003d event.value\n\telse:\n\t\tsystem.perspective.print(\"Not a valid list \")\n\t\treturn\n\n\ttag_data \u003d system.util.jsonEncode(tag_data)\n\tsystem.tag.writeBlocking([tag_path], [tag_data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "302px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" + }, + "transforms": [ + { + "code": "\tdata \u003d []\n\t\n\tdef get_item(detailed_view , devices):\n\t\treturn {\n\t\t\t\"Devices\":str(devices),\n\t\t\t\"DetailedView\":detailed_view\n\t\t\t\n\t\t}\n\t\n\tfor k,v in system.util.jsonDecode(value).items():\n\t\titem \u003d get_item(k, v)\n\t\tdata.append(item)\n\t\n\treturn data\n\t\t\n\t\t", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "path": "this.custom.tagData" + }, + "type": "property" + } + }, + "props.rows.subview.viewParams.value": { + "binding": { + "config": { + "path": "this.props.selection.data" + }, + "type": "property" + } + }, + "props.selection.data": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"selected-views\", payload\u003dcurrentValue.value)" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "DetailedView", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Devices", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "rows": { + "subview": { + "viewParams": { + "rowIndex": "value" + }, + "viewPath": "Main-Views/Config-Tool/TableSubView" + } + }, + "style": { + "fontSize": "12px", + "marginLeft": "10px" + } + }, + "type": "ia.display.table" + }, + { + "children": [ + { + "custom": { + "dockOpened": true + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdevice_entry \u003d {\"view\":\"\",\"deviceList\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/AddDetailedViewMapping\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\n\t\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "135px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/add_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px" + }, + "text": "Add View" + }, + "type": "ia.input.button" + }, + { + "custom": { + "dataAfterRemoval": { + "ARSAW1301": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1302": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1303": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1304": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1305": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1306": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1307": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1308": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1309": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1310": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1311": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1312": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1501": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1502": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1503": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1504": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1505": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1506": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1507": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1508": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1509": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1510": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1511": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "ARSAW1512": { + "Area": "AR FLOOR", + "SubArea": "ARSAW" + }, + "FSC1": { + "Area": "", + "SubArea": "" + }, + "FSC10": { + "Area": "OUTBOUND", + "SubArea": "FSC" + }, + "FSC2": { + "Area": "", + "SubArea": "" + }, + "FSC_Cells": { + "Area": "", + "SubArea": "" + }, + "FSC_Induct_1-4": { + "Area": "", + "SubArea": "" + }, + "PLC01": { + "Area": "OUTBOUND", + "SubArea": "SHIP" + }, + "PLC02": { + "Area": "OUTBOUND", + "SubArea": "SHIP" + }, + "PLC03": { + "Area": "OUTBOUND", + "SubArea": "KO \u0026 REJECT" + }, + "PLC06": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER" + }, + "PLC07": { + "Area": "OUTBOUND", + "SubArea": "TOTE ROUTER" + }, + "PLC08": { + "Area": "OUTBOUND", + "SubArea": "TOTE FEED" + }, + "PLC09": { + "Area": "INBOUND", + "SubArea": "RECEIVING" + }, + "PLC09_Receiving2": { + "Area": "", + "SubArea": "" + }, + "PLC09_Receiving3": { + "Area": "", + "SubArea": "" + }, + "PLC1000": { + "Area": "INBOUND", + "SubArea": "RECEIVING" + }, + "PLC1000_Receiving4": { + "Area": "", + "SubArea": "" + }, + "PLC13": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P2" + }, + "PLC13_SC2": { + "Area": "", + "SubArea": "" + }, + "PLC14": { + "Area": "", + "SubArea": "" + }, + "PLC15": { + "Area": "AR FLOOR", + "SubArea": "ARSAW P3" + }, + "PLC15_SC2": { + "Area": "", + "SubArea": "" + }, + "PLC16": { + "Area": "AR FLOOR", + "SubArea": "PICK TO REBIN P3" + }, + "PLC20": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TOTE 1-3" + }, + "PLC20_Tote4-8": { + "Area": "", + "SubArea": "" + }, + "PLC21": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER" + }, + "PLC22": { + "Area": "OUTBOUND", + "SubArea": "AFE TRAY ROUTER" + }, + "PLC23": { + "Area": "OUTBOUND", + "SubArea": "AFE1 TRAY FEED" + }, + "PLC24": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 1,2" + }, + "PLC25": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 3,4" + }, + "PLC26": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 5,6" + }, + "PLC27": { + "Area": "OUTBOUND", + "SubArea": "AFE1 WALL 7,8" + }, + "PLC30": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 1-4" + }, + "PLC31": { + "Area": "OUTBOUND", + "SubArea": "AFE1 PACK 5-8" + }, + "PLC32": { + "Area": "OUTBOUND", + "SubArea": "AFE1 EMP. TOTE" + }, + "PLC60": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 1" + }, + "PLC61": { + "Area": "OUTBOUND", + "SubArea": "S.PACKING 2" + }, + "PLC69": { + "Area": "OUTBOUND", + "SubArea": "GIFT WRAP" + }, + "PLC70": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP" + }, + "PLC71": { + "Area": "OUTBOUND", + "SubArea": "TRANSSHIP" + }, + "PLC80": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC81": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC82": { + "Area": "OUTBOUND", + "SubArea": "SMART PACKING" + }, + "PLC97": { + "Area": "SAFETY PLC", + "SubArea": "" + }, + "PLC98": { + "Area": "SAFETY PLC", + "SubArea": "" + }, + "PLC99": { + "Area": "SAFETY PLC", + "SubArea": "" + } + }, + "itemsToRemove": [] + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\twhid \u003d self.session.custom.fc\n\t\n\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid])[0].value) \n\t\n\tfor item in self.custom.itemsToRemove:\n\t\tresult \u003d tagData.pop(item[\"DetailedView\"],None)\n\t\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid],system.util.jsonEncode(tagData))" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_2" + }, + "position": { + "basis": "156px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\treturn system.util.jsonDecode(value)", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.Enable_input" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/remove_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px", + "marginRight": "10px" + }, + "text": "Remove View" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "selected-views", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.itemsToRemove \u003d payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid], [\"{}\"])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0", + "visible": false + }, + "position": { + "basis": "135px", + "display": false + }, + "props": { + "image": { + "icon": { + "path": "material/remove_circle_outline" + } + }, + "primary": false, + "style": { + "marginLeft": "10px" + }, + "text": "Clear" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\tFileHandler.downloader.download_file(\"DetailedView_data.csv\", self.custom.tagData, FileHandler.downloader.detailed_views_converter)\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "135px" + }, + "propConfig": { + "custom.tagData": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" + }, + "transforms": [ + { + "code": "\treturn [{\"DetailedView\":k,\"Devices\":v}for k,v in system.util.jsonDecode(value).items()]", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#377AAE", + "path": "material/cloud_download" + } + }, + "primary": false, + "style": { + "classes": "\n" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "marginBottom": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "414px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "888px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "custom": { + "params": { + "Area": "", + "Device": "", + "SubArea": "" + }, + "path": "Main-Views/Config-Tool/TagViewer" + }, + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "320px", + "grow": 1 + }, + "propConfig": { + "props.params.params": { + "binding": { + "config": { + "path": "this.custom.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "this.custom.path" + }, + "type": "property" + } + } + }, + "props": { + "useDefaultViewWidth": true + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-side-view", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.path \u003d payload.get(\"path\")\n\tself.custom.params \u003d payload.get(\"params\")\n\t", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.view" + } + ], + "custom": { + "path": "Main-Views/Config-Tool/TagViewer" + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "420px" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-side-view", + "pageScope": true, + "script": "\t# implement your handler here\n\tif self.position.display and payload.get(\"path\") \u003d\u003d self.custom.path :\n\t\tself.position.display \u003d False\n\telse:\n\t\tself.position.display \u003d True\n\t\t\n\tself.custom.path \u003d payload.get(\"path\")\n\n#\tself.position.display \u003d not self.position.display", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } + ], + "custom": { + "isDockOpen": false + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\" % (whid)\n\t\n\tif system.tag.exists(tag_path):\n\t\tpayload \u003d {}\n\t\ttag_to_read \u003d system.tag.readBlocking([tag_path])[0].value\n\t\tjson_value \u003d system.util.jsonDecode(tag_to_read)\n\t\tplc_config \u003d []\n\t\tfor k,v in json_value.items():\n\t\t\tplc \u003d k\n\t\t\tarea \u003d v.get(\"Area\")\n\t\t\tsub_area \u003d v.get(\"SubArea\")\n\t\t\titems_to_add \u003d {\"Device\":plc, \n\t\t\t\t\t\t\t\"Area\":area, \n\t\t\t\t\t\t\t\"SubArea\":sub_area}\n\t\t\tplc_config.append(items_to_add)\n\t\tpayload[\"data\"] \u003d plc_config\n\t\tsystem.perspective.sendMessage(\"update-plc-config\", payload, scope \u003d \"view\")\n\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "scripts": { + "customMethods": [ + { + "name": "newMethod", + "params": [], + "script": "\t# implement your method here" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/resource.json new file mode 100644 index 0000000..19900a0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "a41682e488e91b7244b105d4eb82716aa5776345af220823e0d371e42f7869d0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/thumbnail.png new file mode 100644 index 0000000..56232cd Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/view.json new file mode 100644 index 0000000..ef0dc6f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/view.json @@ -0,0 +1,66 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 400 + } + }, + "root": { + "children": [ + { + "custom": { + "params": {}, + "path": "value" + }, + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "320px", + "grow": 1 + }, + "propConfig": { + "props.params.params": { + "binding": { + "config": { + "path": "this.custom.params" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "this.custom.path" + }, + "type": "property" + } + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-side-view", + "pageScope": true, + "script": "\t# implement your handler here\n\tself.custom.path \u003d payload.get(\"path\")\n\tself.custom.params \u003d payload.get(\"params\")\n\tsystem.perspective.print(payload)\n\t", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/resource.json new file mode 100644 index 0000000..b693a84 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "abb0368b8e639de366e48da8e2ee0448faf7781617191fa43ca6757e9b38d5fd" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/thumbnail.png new file mode 100644 index 0000000..2f771c9 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/view.json new file mode 100644 index 0000000..68b4ff4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/view.json @@ -0,0 +1,237 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "custom": { + "selected_tag": "[BRS1_SCADA_TAG_PROVIDER]System/device_count" + }, + "events": { + "component": { + "onNodeClick": { + "config": { + "script": "\tpath \u003d event.path\n\tinfo \u003d system.tag.getConfiguration(path)\n\ttag_type \u003d str(info[0].get(\"tagType\"))\n\tif tag_type \u003d\u003d \"AtomicTag\":\n\t\tself.custom.selected_tag \u003d path\n\telse:\n\t\tself.custom.selected_tag \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TagBrowseTree" + }, + "position": { + "basis": "669px" + }, + "propConfig": { + "custom.tag_value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "selected_tag": "{this.custom.selected_tag}" + }, + "tagPath": "{selected_tag}" + }, + "transforms": [ + { + "code": "\timport org.python.core.PyUnicode as uni\n\tif value \u003d\u003d None:\n\t\treturn \"N/A\"\n\t\t\n\tif isinstance(value, uni) and len(value) \u003e 50:\n\t\treturn (value[:50])\n\treturn value", + "type": "script" + } + ], + "type": "tag" + }, + "onChange": { + "enabled": null, + "script": "\tpayload \u003d {}\n\ttag_value \u003d self.custom.tag_value\n\tpayload[\"data\"] \u003d tag_value \n\tsystem.perspective.sendMessage(\"update-tag-value\", payload, scope \u003d \"view\")" + } + }, + "props.root.path": { + "binding": { + "config": { + "expression": "concat(\"[\",{session.custom.fc},\"_SCADA_TAG_PROVIDER]\")" + }, + "type": "expr" + } + } + }, + "props": { + "root": {}, + "selection": { + "mode": "single", + "values": [ + "[BRS1_SCADA_TAG_PROVIDER]System/device_count" + ] + } + }, + "type": "ia.display.tag-browse-tree" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "32px" + }, + "props": { + "path": "material/local_offer", + "style": { + "marginLeft": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "80px" + }, + "props": { + "style": { + "textIndent": "10px" + }, + "text": "Tag Value", + "textStyle": { + "fontSize": "12px", + "fontWeight": "bold" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "none", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "marginLeft": "10px", + "marginRight": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "basis": "301px" + }, + "props": { + "source": "{}", + "style": { + "fontFamily": "Arial", + "textIndent": "10px" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-tag-value", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.source \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "112px" + }, + "props": { + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px", + "marginLeft": "10px", + "marginRight": "10px", + "marginTop": "10px", + "paddingBottom": "10px", + "paddingLeft": "10px", + "paddingRight": "10px", + "paddingTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "1025px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "margin": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "361px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/resource.json new file mode 100644 index 0000000..5e898a7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7eec97369adc9e2f85b63ba32dc96fcb18e2a5a7918c1a9f9fea9a96b6144c4a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/thumbnail.png new file mode 100644 index 0000000..176953c Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/view.json new file mode 100644 index 0000000..ce1af37 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/view.json @@ -0,0 +1,244 @@ +{ + "custom": {}, + "params": { + "device_name": "Test", + "driver": "value", + "enabled": false, + "host_name": "value", + "status": "value" + }, + "propConfig": { + "params.device_name": { + "paramDirection": "input", + "persistent": true + }, + "params.driver": { + "paramDirection": "input", + "persistent": true + }, + "params.enabled": { + "paramDirection": "input", + "persistent": true + }, + "params.host_name": { + "paramDirection": "input", + "persistent": true + }, + "params.status": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 1908 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.device_name" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.driver" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.enabled" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "564px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.status" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "564px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.host_name" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "2px", + "grow": 1 + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport sys\n\tfrom java.lang import Exception\n\t\n\ttry:\n\t\tif system.tag.exists(\"System/DeviceList\"):\n\t\t\tdevice_cfg \u003d system.tag.read(\"System/DeviceList\").value\n\t\t\tif device_cfg\u003d\u003d\u0027\u0027:\n\t\t\t\tdevice_cfg\u003d\u0027{}\u0027\n\t\t\tcfg \u003d system.util.jsonDecode(device_cfg)\n\t\t\tenabled \u003d self.view.params.enabled\n\t\t\tdevice \u003d self.view.params.device_name\n\t\t\tsystem.perspective.print(enabled)\n\t\t\tif enabled:\n\t\t\t\tdevice_list \u003d cfg.get(\"Devicedisable\",[])\n\t\t\t\tif device not in device_list:\n\t\t\t\t\tdevice_list.append(device)\n\t\t\t\tcfg[\"Devicedisable\"] \u003d device_list\n\t\t\tif not enabled:\n\t\t\t\tdevice_list \u003d cfg.get(\"DeviceEnable\",[])\n\t\t\t\tif device not in device_list:\n\t\t\t\t\tdevice_list.append(device)\n\t\t\t\tcfg[\"DeviceEnable\"] \u003d device_list\n\t\t\tsystem.perspective.print(cfg) \n\t\t\tencode \u003d system.util.jsonEncode(cfg)\n\t\t\tsystem.tag.write(\"System/DeviceList\",encode)\t\n\texcept:\n\t logger \u003d system.util.getLogger(\"Device_Enable\")\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003d str(lineno) + str(exc_type) + str(exc_obj)\n\t #system.gui.errorBox(errorMessage,\"Error\")\n\t " + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "50px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({view.params.enabled} \u003d True, \"Disable Device\", \"Enable Device\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/PB_1" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "2px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "custom": { + "update": "value", + "update_enable": "value" + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "borderStyle": "ridge" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/resource.json new file mode 100644 index 0000000..4de64ac --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "95da99ac02b946d60785078ff1f6f4ad0287786912c93f309c019cdb7446d6a3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/thumbnail.png new file mode 100644 index 0000000..5dc400d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/view.json new file mode 100644 index 0000000..6307483 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/view.json @@ -0,0 +1,1713 @@ +{ + "custom": { + "delay": 2000, + "update": 2000 + }, + "params": {}, + "propConfig": { + "custom.delay": { + "persistent": true + }, + "custom.update": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "10px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontSize": 20, + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "800px" + }, + "props": { + "style": { + "classes": "Labels/Label" + }, + "text": "Import/Add Device" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "145px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "800px" + }, + "props": { + "style": { + "classes": "Labels/Label" + }, + "text": "Export/Remove Device" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "10px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "32px", + "grow": 1, + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\t\n\t\n\tdef get_headers_index(headers,col):\n\t for i,value in enumerate(headers):\n\t if value \u003d\u003d col:\n\t\t \treturn i\n\t\n\t\n\tdata \u003d self.props.data\n\theaders \u003d system.dataset.getColumnHeaders(data)\n\tcol \u003d event.column\n\trow \u003d event.rowIndex\n\tvalue \u003d event.value\n\tcol_index \u003d get_headers_index(headers,col)\n\tself.props.data \u003d system.dataset.setValue(data, row, col_index, value)\n\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "AddTable" + }, + "position": { + "basis": "800px" + }, + "propConfig": { + "props.data": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d self.props.data\n\tsystem.perspective.sendMessage(\"addtable-data-update\", payload \u003d payload , scope \u003d \"view\")" + } + }, + "props.selection.selectedRow": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value is not None:\n\t\tpayload \u003d currentValue.value\t\n\telse:\n\t\tpayload \u003d -1\n\tsystem.perspective.sendMessage(\"addtable-selection-update\", payload \u003d payload , scope \u003d \"view\")" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Device Name", + "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": "Hostname", + "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": "Driver", + "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": "view", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "Main-Views/Device-Manager/DriverDropDown", + "visible": true, + "width": "" + } + ], + "data": { + "$": [ + "ds", + 192, + 1638525899295 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "rows": { + "subviewExpansionMode": "single" + }, + "selection": { + "data": [ + { + "Driver": "S7300" + } + ], + "enableColumnSelection": true, + "selectedColumn": "Driver", + "selectedRow": 0 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-addtable-data", + "pageScope": false, + "script": "\tself.props.data \u003d payload", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "update-addtable-selectedrow", + "pageScope": false, + "script": "\tif payload \u003d\u003d -1:\n\t\tself.props.selection.selectedRow \u003d None", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "addtable-dropdown-updaterow", + "pageScope": true, + "script": "\t#newData \u003d []\n\tsystem.perspective.print(\"DropDownMessage\")\n\thostname \u003d str(payload[\u0027Hostname\u0027])\n\tvalue \u003d payload[\u0027value\u0027]\n\tdata \u003d system.dataset.toPyDataSet(self.props.data)\n\tnewData \u003d data\n\tupdate \u003d False \n\tfor row in range(data.getRowCount()):\n\t\tsystem.perspective.print(\"Looping\")\n\t\tif data[row][\u0027Hostname\u0027] \u003d\u003d hostname:\n\t\t\tsystem.perspective.print(\"New Data\")\n\t\t\tnewData \u003d system.dataset.updateRow(data , row , {\"Driver\": value})\n\t\t\tbreak\n\t\t\n\tself.props.data \u003d newData\n", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "custom": { + "file_data": "" + }, + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\tsystem.perspective.print(\"uploading\")\n\tself.custom.file_data \u003d event.file.getString()\n\t\n\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "propConfig": { + "custom.file_data": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value :\n\t\ttmp \u003d currentValue.value.replace(\"\\n\", \",\").replace(\u0027\"\u0027, \u0027\u0027)\n\t\t\n\t\tdata \u003d tmp.split(\",\")\n\t\theaders \u003d data[0:3]\n\t\tvalues \u003d []\n\t\tprint(headers)\n\t\n\t\tfor i in range(0,(len(data)-3),3):\n\t\t\tif i \u003d\u003d 0:\n\t\t\t\tpass\n\t\t\telse:\n\t\t\t\tvalue \u003d [data[i] , data[i+1] , data[i+2]]\n\t\t\t\t#value \u003d {\"Device name\":data[i] , \"Hostname\": data[i+1], \"Driver\":data[i+2]}\n\t\t\t\tprint(len(value))\n\t\t\t\tvalues.append(value)\n\t\t\n\t\n\t\tnew_data \u003d system.dataset.toDataSet(headers,values)\n\t\t#new_data \u003d values\n\t\tsystem.perspective.sendMessage(\"update-addtable-data\", payload \u003d new_data, scope \u003d \"view\")\n\t\tself.custom.file_data \u003d \"\"" + } + } + }, + "props": { + "fileUploadIcon": { + "color": "#000000", + "name": "Import" + }, + "style": { + "backgroundColor": "#BAB6B6", + "classes": "" + }, + "supportedFileTypes": [ + "csv" + ] + }, + "type": "ia.input.fileupload" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "AddTableData": { + "$": [ + "ds", + 192, + 1638525899295 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + } + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.custom.AddTableData\n\tpayload \u003d system.dataset.addRow(data,[\"\",\"\",\"\"])\n\tsystem.perspective.sendMessage(\"update-addtable-data\", payload\u003dpayload, scope\u003d\"view\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "image": { + "icon": { + "path": "material/add" + } + }, + "style": { + "classes": "Buttons/PB_1" + }, + "text": "Add Row" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "addtable-data-update", + "pageScope": false, + "script": "\t# implement your handler here\n\tself.custom.AddTableData \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "AddTableData": { + "$": [ + "ds", + 192, + 1638525899295 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "SelectedRow": 0 + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\trow_to_delete \u003d self.custom.SelectedRow\n\tdataset \u003d self.custom.AddTableData\n\trows \u003d dataset.getRowCount()\n\tsystem.perspective.print(\"The row is \"+ str(row_to_delete))\n\tsystem.perspective.print(\"The number of row(s) is \"+ str(rows))\n\tif row_to_delete is not None:\n\t\tif row_to_delete or (row_to_delete \u003d\u003d 0 and rows \u003e 1):\n\t\t\tsystem.perspective.print(\"Deleting \"+ str(row_to_delete))\n\t\t\tpayload \u003d system.dataset.deleteRow(dataset,row_to_delete)\n\t\telif row_to_delete \u003d\u003d 0 and rows \u003d\u003d 1:\n\t\t\tsystem.perspective.print(\"Deleting \"+ str(row_to_delete))\n\t\t\tpayload \u003d system.dataset.updateRow(dataset,row_to_delete,{\"Device Name\":\"\",\"Hostname\":\"\",\"Driver\":\"\"}) \n\t\t\t\n\t\tsystem.perspective.sendMessage(\"update-addtable-data\", payload\u003dpayload, scope\u003d\"view\")\n\t\tsystem.perspective.sendMessage(\"update-addtable-selectedrow\", payload\u003d -1, scope\u003d\"view\")\n\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_1" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "image": { + "icon": { + "path": "material/remove" + } + }, + "style": { + "classes": "Buttons/PB_1" + }, + "text": "Delete Row" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "addtable-data-update", + "pageScope": false, + "script": "\tself.custom.AddTableData \u003d payload", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "addtable-selection-update", + "pageScope": false, + "script": "\tsystem.perspective.print(payload)\n\tif payload \u003d\u003d -1:\n\t\tself.custom.SelectedRow \u003d None\t\n\telse:\n\t\tself.custom.SelectedRow \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "AddTableData": { + "$": [ + "ds", + 192, + 1638525899295 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "Drivers": "{\"S7300\":\"\",\"S7400\":\"\",\"S71200\":\"\",\"S71500\":\"S7\", \"CompactLogix\":\"\",\"Legacy Allen-Bradley\":\"\",\"ControlLogix\":\"\", \"LogixDriver\":\"\",\"MicroLogix\":\"\"} " + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport sys\n\timport re\n\tfrom java.lang import Exception\n\t\n\tdef drivers():\n\t\tdrivers_dict \u003d self.custom.Drivers\n\t\tdrivers_decode \u003d system.util.jsonDecode(drivers_dict)\n\t\treturn drivers_decode\n\t\n\tdef decode(tagPath):\n\t device_cfg \u003d system.tag.read(tagPath).value\n\t device_decode \u003d system.util.jsonDecode(device_cfg)\n\t return device_decode\n\t\n\t\n\tdef update_add_devices(device_list,drivers):\n\t\tfc \u003d system.tag.read(\"Configuration/FC\").value\n\t\tprefix \u003d fc\t\n\t\tdevices_data \u003d self.custom.AddTableData\n\t\tpy_devices \u003d system.dataset.toPyDataSet(devices_data)\n\t\tcurrent_device_list \u003d device_list.get(\"Devicestatus\",\"\")\n\t\tdevices_to_check \u003d [i for i in current_device_list]\n\t\tdevices_to_add \u003d {}\n\t\terror\u003d[]\n\t\tif py_devices:\n\t\t\tfor i,j in enumerate(py_devices):\n\t\t\t\trow \u003d[]\n\t\t\t\tname \u003d j[0]\n\t\t\t\thostname \u003d j[1]\n\t\t\t\tdriver \u003d j[2]\n\t\t\t\tsystem.perspective.print(drivers.get(j[2]))\t\n\t\t\t\tcheck_driver \u003d drivers.get(j[2],\"False\")\n\t\t\t\tif name.startswith(prefix):\n\t\t\t\t\tif name not in devices_to_check:\n\t\t\t\t\t\tif j[0] and j[1] and check_driver !\u003d \"False\":\n\t\t\t\t\t\t\trow.append(hostname)\n\t\t\t\t\t\t\trow.append(driver)\n\t\t\t\t\t\t\tdevices_to_add[name] \u003d row\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\terror.append(i)\n\t\t\t\t\telse:\n\t\t\t\t\t system.perspective.print(\"Device already exists: %s\" % (name))\n\t\t\t\t\t message \u003d {\"labelText\":\"Device already exists: %s\" % (name),\"acceptPB\":\"Ok\", \"cancelPB\":\"hide\",\"iconPath\":\"material/error\" }\n\t\t\t\t\t system.perspective.openPopup(\"Exists\",\u0027PopUp-Views/UserInfo\u0027, params \u003d {\u0027Message\u0027:message})\n\t\t\t\telse:\n\t\t\t\t\t system.perspective.print(\"Use the correct prefix: %s\" % (fc))\n\t\t\t\t\t message \u003d {\"labelText\":\"Use the correct prefix: %s\" % (fc),\"acceptPB\":\"Ok\", \"cancelPB\":\"hide\",\"iconPath\":\"material/error\" }\n\t\t\t\t\t system.perspective.openPopup(\"Exists\",\u0027PopUp-Views/UserInfo\u0027, params \u003d {\u0027Message\u0027:message})\n\t\t#\tdisplay_err\u003d\"\"\n\t\t#\tdisplay_err \u003d display_err.join(error)\n\t\t\tif error:\n\t\t\t\tdisplay_err \u003d str(error)\n\t\t\t\tsystem.perspective.print(\"Missing data in row: %s\" % (display_err))\n\t\t\t\tmessage \u003d {\"labelText\":\"Missing data in row: %s\" % (display_err),\"acceptPB\":\"Ok\", \"cancelPB\":\"hide\",\"iconPath\":\"material/error\" }\n\t\t\t\tsystem.perspective.openPopup(\"Exists\",\u0027PopUp-Views/UserInfo\u0027, params \u003d {\u0027Message\u0027:message})\n\t\t\tdevice_list[\"AddDevices\"] \u003d devices_to_add \n\t\t\tencode \u003d system.util.jsonEncode(device_list)\n\t\t\tsystem.tag.write(\"System/DeviceList\",encode)\n\t\n\ttry:\n\t\topc_drivers \u003d drivers()\n\t\tif system.tag.exists(\"System/DeviceStatus\"):\n\t\t\tcfg \u003d decode(\"System/DeviceStatus\")\n\t\t\tupdate_add_devices(cfg,opc_drivers)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t error_description\u003dstr(lineno)+\" , \"+str(exc_type)+\" , \"+str(exc_obj)\n\t system.perspective.print(error_description)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_2" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "AddTableData": { + "$": [ + "ds", + 192, + 1638376388559 + ], + "$columns": [ + { + "data": [ + "IECTest1", + "IECTest2" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "IECTest1", + "" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S71500", + "" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "image": { + "icon": { + "path": "material/keyboard_return" + } + }, + "style": { + "classes": "Buttons/PB_1" + }, + "text": "Add Device" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "addtable-data-update", + "pageScope": false, + "script": "\t\n\tself.custom.AddTableData \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\theader \u003d [\"Device Name\",\"Hostname\",\"Driver\"]\n\ttable \u003d [[\"\",\"\",\"\"]]\n\tpayload \u003d system.dataset.toDataSet(header,table)\n\tsystem.perspective.sendMessage(\"update-addtable-data\", payload\u003dpayload, scope\u003d\"view\")\n\tsystem.perspective.sendMessage(\"update-addtable-selectedrow\", payload\u003d -1, scope\u003d\"view\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/delete_forever", + "style": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderColor": "#AAAAAA", + "borderStyle": "solid", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "borderWidth": 1, + "classes": "Buttons/PB_1" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "125px", + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeleteTable" + }, + "position": { + "basis": "800px" + }, + "propConfig": { + "props.data": { + "onChange": { + "enabled": null, + "script": "\tpayload \u003d self.props.data\n\tsystem.perspective.sendMessage(\"deletetable-data-update\", payload \u003d payload , scope \u003d \"view\")" + } + }, + "props.selection.selectedRow": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value is not None:\n\t\tpayload \u003d currentValue.value\t\n\telse:\n\t\tpayload \u003d -1\n\tsystem.perspective.sendMessage(\"deletetable-selection-update\", payload \u003d payload , scope \u003d \"view\")" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Device Name", + "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": "Hostname", + "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": "Driver", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "data": { + "$": [ + "ds", + 192, + 1638468310855 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "selection": { + "data": [ + { + "Driver": "S7300" + } + ], + "enableColumnSelection": true, + "selectedColumn": "Driver", + "selectedRow": 0 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-deletetable-data", + "pageScope": false, + "script": "\tself.props.data \u003d payload ", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "update-deletetable-selectedrow", + "pageScope": false, + "script": "\tif payload \u003d\u003d -1:\n\t\tself.props.selection.selectedRow \u003d None", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport sys\n\tfrom java.lang import Exception\n\t\n\tdef update_delete_table():\t\n\t\t\tprefix \u003d system.tag.read(\"Configuration/FC\").value\n\t\t\tdevices\u003d system.tag.read(\"System/DeviceStatus\").value\n\t\t\tdecode_devices\u003d system.util.jsonDecode(devices)\n\t\t\tdevice_status\u003d decode_devices.get(\"Devicestatus\",\"\")\n\t\t\ttable\u003d []\n\t\t\tif device_status:\n\t\t\t\tfor i in device_status:\n\t\t\t\t\trow \u003d[]\n\t\t\t\t\tname\u003d [i]\n\t\t\t\t\tif i.startswith(prefix):\n\t\t\t\t\t\trow\u003d device_status[i]\n\t\t\t\t\t\thostname \u003d [row[3]]\n\t\t\t\t\t\tdriver \u003d [row[2]]\n\t\t\t\t\t\tnew_row \u003d name + hostname + driver\n\t\t\t\t\t\ttable.append(new_row)\n\t\t\t\n\t\t\tif not len(table):\n\t\t\t\ttable.append([\"\",\"\",\"\"])\n\t\t\t\t\t\t\n\t\t\theader\u003d [\"Device Name\",\"Hostname\",\"Driver\"]\n\t\t\tdevice_dataset \u003d system.dataset.toDataSet(header,table)\n\t\t\tsystem.perspective.print(device_dataset)\n\t\t\tsystem.perspective.sendMessage(\"update-deletetable-data\", payload \u003d device_dataset , scope\u003d\"view\") \n\t\t\t\n#\ttry:\n\tif system.tag.exists(\"System/DeviceStatus\"):\n\t update_delete_table()\n#\texcept:\n#\t logger \u003d system.util.getLogger(\"Update_delete_table\")\n#\t exc_type, exc_obj, tb \u003d sys.exc_info()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "image": { + "icon": { + "path": "material/update" + } + }, + "style": { + "classes": "Buttons/PB_1" + }, + "text": "Update" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "DeleteTableData": { + "$": [ + "ds", + 192, + 1638468310856 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + }, + "SelectedRow": 0 + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport sys\n\tfrom java.lang import Exception\n\t\n\tdef decode(tagPath):\n\t device_cfg \u003d system.tag.read(tagPath).value\n\t device_decode \u003d system.util.jsonDecode(device_cfg)\n\t return device_decode\n\t\n\t\n\tdef update_delete_devices(device_list):\n\t\trow_to_delete \u003d self.parent.parent.getChild(\u0027DeleteTable\u0027).props.selection.selectedRow\n\t\tdelete_data \u003d self.parent.parent.getChild(\u0027DeleteTable\u0027).props.data\n\t\tsystem.perspective.print(device_list)\n\t\tpy_devices \u003d system.dataset.toPyDataSet(delete_data)\n#\t\tsystem.perspective.print(py_devices)\n\t\trow \u003d[]\n\t\tif py_devices:\n\t\t\tfor i,j in enumerate(py_devices):\n\t\t\t\tif i \u003d\u003d row_to_delete:\n\t\t\t\t\tname \u003d j[0]\n\t\t\t\t\trow.append(name)\n\t\t\tdevice_list[\"Removedevices\"] \u003d row \n\t\t\tencode \u003d system.util.jsonEncode(device_list)\n\t\t\t#proceed \u003d system.gui.confirm(\"Device %s will be removed from the gateway, do you wish to proceed?\" % (name), \"Remove Device\",1)\n\t\t\t#if proceed:\n\t\t\t#system.tag.write(\"System/DeviceList\",encode)\n\t\t\tsystem.tag.writeBlocking([\"System/DeviceList\",], encode)\n\t\t\t\n#\ttry:\n\tcfg \u003d decode(\"System/DeviceList\")\n\tupdate_delete_devices(cfg)\n\t\t\n#\texcept:\n#\t logger \u003d system.util.getLogger(\"Device_Delete\")\n#\t exc_type, exc_obj, tb \u003d sys.exc_info()\n#\t lineno \u003d tb.tb_lineno\n#\t logger.error(\"Error: %s, %s, %s\" % (lineno, exc_type, exc_obj))\n#\t " + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "image": { + "icon": { + "path": "material/remove" + } + }, + "style": { + "classes": "Buttons/PB_1" + }, + "text": "Remove Device" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "deletetable-selection-update", + "pageScope": false, + "script": "\tif payload \u003d\u003d -1:\n\t\tself.custom.SelectedRow \u003d None\t\n\telse:\n\t\tself.custom.SelectedRow \u003d payload", + "sessionScope": false, + "viewScope": true + }, + { + "messageType": "deletetable-data-update", + "pageScope": false, + "script": "\tself.custom.DeleteTableData \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "DeleteTableData": { + "$": [ + "ds", + 192, + 1638468310856 + ], + "$columns": [ + { + "data": [ + "IEC_Test" + ], + "name": "Device Name", + "type": "String" + }, + { + "data": [ + "lsdcknsncls" + ], + "name": "Hostname", + "type": "String" + }, + { + "data": [ + "S7300" + ], + "name": "Driver", + "type": "String" + } + ] + } + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\timport sys\n\tfrom java.lang import Exception\n\t\n\tdef save_devices():\n\t\tdevices_to_save \u003d self.custom.DeleteTableData\n\t\tpy_devices \u003d system.dataset.toPyDataSet(devices_to_save)\n\t\tdevice_list \u003d []\n\t\tfor i,j in enumerate(py_devices):\n\t\t#check the required fields have data in them.\n\t\t\trow \u003d[]\n\t\t\tname \u003d j[0]\n\t\t\thostname \u003d j[1]\n\t\t\tdriver \u003d j[2]\n\t\t\trow.append(name)\n\t\t\trow.append(hostname)\n\t\t\trow.append(driver)\n\t\t\tdevice_list.append(row)\n\t\tHeader \u003d [\u0027Device Name\u0027,\u0027Hostname\u0027,\u0027Driver\u0027]\n\t\tdevice_dataset \u003d system.dataset.toDataSet(Header,device_list)\n\t\tcsv_file \u003d system.dataset.toCSV(device_dataset)\n\t\tsystem.perspective.download(filename\u003d \"myExport.csv\", data \u003d csv_file, contentType\u003d \"text/csv; charset\u003dutf-8\")\n#\t\tfilePath \u003d system.file.saveFile(\"myExport.csv\", \"csv\", \"Gateway Devices\") \n#\t\tif filePath:\n#\t\t system.file.writeFile(filePath, csv_file)\n\t\n\t\n#\ttry: \n\tsave_devices()\n#\texcept:\n#\t logger \u003d system.util.getLogger(\"save_devices\")\n#\t exc_type, exc_obj, tb \u003d sys.exc_info()\n#\t lineno \u003d tb.tb_lineno\n#\t logger.error(\"Error: %s, %s, %s\" % (lineno, exc_type, exc_obj))" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/save", + "style": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderColor": "#AAAAAA", + "borderStyle": "solid", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "borderWidth": 1, + "classes": "Buttons/PB_1" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "deletetable-data-update", + "pageScope": false, + "script": "\tself.custom.DeleteTableData \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "custom": { + "DeleteTableData": "value", + "SelectedRow": "value" + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\theader \u003d [\"Device Name\",\"Hostname\",\"Driver\"]\n\ttable \u003d [[\"\",\"\",\"\"]]\n\tdevice_dataset \u003d system.dataset.toDataSet(header,table)\n\tsystem.perspective.sendMessage(\"update-deletetable-data\", payload\u003ddevice_dataset, scope\u003d\"view\")\n\tsystem.perspective.sendMessage(\"update-deletetable-selectedrow\", payload\u003d -1, scope\u003d\"view\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon_0" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/delete_forever", + "style": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderColor": "#AAAAAA", + "borderStyle": "solid", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "borderWidth": 1, + "classes": "Buttons/PB_1" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "125px", + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "deletetable-selection-update", + "pageScope": true, + "script": "\tif payload \u003d\u003d -1:\n\t\tself.custom.SelectedRow \u003d None\t\n\telse:\n\t\tself.custom.SelectedRow \u003d payload", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "10px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "198px", + "shrink": 0 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "230px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "15px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Labels/Label", + "textAlign": "center" + }, + "text": "\n" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "400px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "textAlign": "center" + }, + "text": "Device Name" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "400px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "textAlign": "center" + }, + "text": "Driver" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "200px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "textAlign": "center" + }, + "text": "Enabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "564px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "textAlign": "center" + }, + "text": "Connection Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "564px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "textAlign": "center" + }, + "text": "Hostname" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "overflow": "visible" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_5" + }, + "position": { + "basis": "15px", + "shrink": 0 + }, + "props": { + "style": { + "classes": "Labels/Label", + "textAlign": "center" + }, + "text": "\n" + }, + "type": "ia.display.label" + } + ], + "custom": { + "update": "value", + "update_enable": "value" + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceList" + }, + "position": { + "grow": 1 + }, + "props": { + "direction": "column", + "path": "Main-Views/Device-Manager/Device", + "useDefaultViewWidth": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-devicelist-data", + "pageScope": false, + "script": "\tself.props.instances \u003d payload", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.flex-repeater" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "10px" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "784px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "custom": { + "delay": 4000, + "run_update": true + }, + "meta": { + "name": "root" + }, + "propConfig": { + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tdef update():\n\t\tdevices \u003d system.tag.read(\"System/DeviceStatus\").value\n\t\tfc \u003d system.tag.read(\"Configuration/FC\").value\n\t\tdecode_devices \u003d system.util.jsonDecode(devices)\n\t\tdevice_status \u003d decode_devices.get(\"Devicestatus\",\"\")\n\t\tsystem.perspective.print(device_status)\n\t\tinstance_style \u003d {\"classes\":\"DeviceManager/DeviceManagerRows\"}\n\t\tinstance_position \u003d {}\n\t\ttable_data \u003d []\n\t\tif device_status:\n\t\t\tfor i in device_status:\n\t\t\t\tif i.startswith(fc):\n\t\t\t\t\trow\u003d{}\n\t\t\t\t\trow[\"device_name\"]\u003d i\n\t\t\t\t\tdevice_items \u003d device_status.get(i)\n\t\t\t\t\tsystem.perspective.print(type(device_items))\n\t\t\t\t\tenabled \u003d device_items[0]\n\t\t\t\t\tstatus \u003d device_items[1]\n\t\t\t\t\tdriver \u003d device_items[2]\n\t\t\t\t\thost_name \u003d device_items[3]\n\t\t\t\t\t\n\t\t\t\t\trow[\"status\"] \u003d status\n\t\t\t\t\trow[\"enabled\"] \u003d enabled\n\t\t\t\t\trow[\"host_name\"] \u003d host_name\n\t\t\t\t\trow[\"driver\"] \u003d driver\n#\t\t\t\t\t\n\t\t\t\t\trow[\"instanceStyle\"]\u003d instance_style\n\t\t\t\t\trow[\"instancePosition\"]\u003d instance_position\n\t\t\t\t\ttable_data.append(row)\n#\t\t\t\n\t\t\t#self.getChild(\"FlexRepeater\").props.instances \u003d table_data\n\t\t\tsystem.perspective.sendMessage(\"update-devicelist-data\", payload \u003d table_data , scope\u003d\"view\")\n\t\telse:\n#\t\t\trow \u003d row_builder.build_row(status \u003d \"\", enabled \u003d \"\", host_name\u003d\"\", driver\u003d\"\",\n#\t\t\t \t\t\t\t\t\t\tinstanceStyle\u003d instance_style, instancePosition \u003d instance_position)\n#\t\t\ttable_data.append(row)\n\t\t\tsystem.perspective.sendMessage(\"update-devicelist-data\", payload \u003d [] , scope\u003d\"view\")\n\t\t\t\t\t\n\n\tif self.custom.run_update:\n\t\tif system.tag.exists(\"System/DeviceStatus\"):\n\t\t\tupdate()\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\n\t\t\n\t\t\n#\t\theader\u003d [\"device_name\",\"enabled\",\"status\",\"driver\",\"hostname\"]\n#\t\tdevice_dataset \u003d system.dataset.toDataSet(header,table)\n#\t\tsorted \u003d system.dataset.sort(device_dataset,\"device_name\",True)\n#\t\tevent.source.parent.getComponent(\u0027DeviceTable\u0027).templateParams \u003d sorted\n#\t\n#\tdef errors():\n#\t\terrors \u003d system.tag.read(\"System/DeviceMgrErrors\").value\n#\t\tevent.source.parent.Errors \u003d errors\n#\ttry:\n#\t\tif event.source.parent.getComponent(\u0027DeviceTable\u0027).runscript:\n#\t\t\tif system.tag.exists(\"System/DeviceStatus\"):\n#\t\t\t\tsystem.util.invokeAsynchronous(update)\n#\t\t\tif system.tag.exists(\"System/DeviceMgrErrors\"):\n#\t\t\t\tsystem.util.invokeAsynchronous(errors)\n#\t\n#\texcept:\n#\t\texc_type, exc_obj, tb \u003d sys.exc_info()\n#\t\tlineno \u003d tb.tb_lineno\n#\t\terror_description\u003dstr(lineno)+\" , \"+str(exc_type)+\" , \"+str(exc_obj)\n#\t\tsystem.gui.messageBox(error_description)" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Main-Background PopUp-Styles/Information-Device" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/resource.json new file mode 100644 index 0000000..26820b9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "9e74e9b48d11b4e329eca67d073b828422c60c39ac0793052a27e1038757e414" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/thumbnail.png new file mode 100644 index 0000000..f46bd05 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/view.json new file mode 100644 index 0000000..43a4bf5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/view.json @@ -0,0 +1,97 @@ +{ + "custom": {}, + "params": { + "rowData": { + "Driver": "value" + } + }, + "propConfig": { + "params.rowData": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 36, + "width": 227 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "path": "view.params.rowData.Driver" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tvalue \u003d currentValue.value\n\tsystem.perspective.print(str(origin))\n\tif value is not None:\n\t\tif \u0027Binding\u0027 not in str(origin):\n\t\t\tmsg \u003d \u0027addtable-dropdown-updaterow\u0027\n\t\t\tHostname \u003d self.view.params.rowData[\u0027Hostname\u0027]\n\t\t\tpayload \u003d\t{\n\t\t\t\t\t\t\u0027value\u0027\t\t: value,\n\t\t\t\t\t\t\u0027Hostname\u0027\t: Hostname\n\t\t\t\t\t\t}\n\t\t\tsystem.perspective.sendMessage(msg, payload)" + } + } + }, + "props": { + "options": [ + { + "label": "S7300", + "value": "S7300" + }, + { + "label": "S7400", + "value": "S7400" + }, + { + "label": "S71200", + "value": "S71200" + }, + { + "label": "S71500", + "value": "S71500" + }, + { + "label": "CompactLogix", + "value": "CompactLogix" + }, + { + "label": "Legacy Allen-Bradley", + "value": "ControlLogix" + }, + { + "label": "ControlLogix", + "value": "ControlLogix" + }, + { + "label": "LogixDriver", + "value": "LogixDriver" + }, + { + "label": "Allen Bradley MicroLogix", + "value": "MicroLogix" + } + ], + "placeholder": { + "text": "Select Driver..." + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/resource.json new file mode 100644 index 0000000..2480ef2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "683a44a7f375338c96150b6460c036ca385af28f58b296e217be6a5d4bbd6de3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/thumbnail.png new file mode 100644 index 0000000..7abf0a7 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/view.json new file mode 100644 index 0000000..6273751 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/view.json @@ -0,0 +1,792 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "help", + "start_time": { + "$": [ + "ts", + 192, + 1718194270770 + ], + "$ts": 1718194270770 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "#\tactivityLog.logger.callLogger(self, \u0027page\u0027)\n\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Header" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Body header" + }, + "position": { + "basis": "1920px" + }, + "props": { + "text": "How can we help you ?", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "45px", + "fontWeight": "bolder", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "120px", + "grow": 1 + }, + "props": { + "justify": "center", + "style": { + "opacity": "0.73", + "textShadow": "#AAAAAA 1px 2px 2px" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Markdown" + }, + "position": { + "basis": "94px", + "grow": 1 + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "\u003chtml\u003eThis page provides help on all things SCADA related. Cant find what your looking for ?. \u003cbr\u003eReach out to the MAP team for assistance.\u003c/html\u003e", + "style": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "20px", + "fontWeight": "lighter", + "lineHeight": "1.5", + "marginBottom": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/menu_book", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "User Guide", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "marginTop": "", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/user_guide" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://w.amazon.com/bin/view/EURME/MAP/Product_Management/SCADA2/Resources/UserGuide" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "UserGuideCard" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": "50px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/developer_mode", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Developer Guide", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/dev_guide" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://w.amazon.com/bin/view/EURME/MAP/Projects/Amazon_SCADA/Expanding_BU_and_New_Regions_SCADA/AMZL/DeveloperGuide/" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "DevelopmentGuideCard" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": "50px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/comment", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Provide Feedback", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/feedback" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://quip-amazon.com/BSxOAUz9geea/SCADA-20-Feedback" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "DevelopmentGuideCard_0" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": 50, + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/healing", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Report Safety Concern", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/reportsafetyconcern" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://atoz.amazon.work/safety_observations" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "SafetyConcernsCard" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "CardsTopRow" + }, + "position": { + "basis": "280px" + }, + "props": { + "justify": "center", + "style": { + "marginBottom": "20px", + "marginTop": "20px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/confirmation_number", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Open a Ticket", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/ticket" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://river.amazon.com/?org\u003dGlobal_RME" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Open a Ticket" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": "50px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/playlist_add_check", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Commissioning Tool Guide", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/commission_guide" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "newTab": true, + "url": "https://w.amazon.com/bin/view/EURME/MAP/Product_Management/SCADA2/Resources/CommissioningToolUserGuide" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Commissioning Tool guide" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": "50px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "58px" + }, + "props": { + "color": "#4D9CCE", + "path": "material/local_library", + "style": { + "margin": "10px", + "marginTop": "50px" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "text": "Symbol Library", + "textStyle": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": "22px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "custom": { + "buttonid": "help/symbol_library" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "params": {}, + "view": "Symbol-Views/Symbol-Library-Views/SymbolLibraryMain" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Symbol Library" + }, + "position": { + "basis": "400px" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#F2F3F4", + "classes": "FadeInFast, background, background-none", + "cursor": "pointer", + "marginBottom": "10px", + "marginRight": "0px", + "marginTop": "10px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "CardsBottomRow" + }, + "position": { + "basis": "260px" + }, + "props": { + "justify": "center", + "style": { + "marginTop": "20px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Card body" + }, + "position": { + "basis": "734px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Body" + }, + "position": { + "basis": "980px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Footer" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#EDEDED" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/resource.json new file mode 100644 index 0000000..1a0267f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "89f8a3078bdf6b841ccba44fb43b953963d1dfae8728d6576d693ba850c9c670" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/thumbnail.png new file mode 100644 index 0000000..89ac8e1 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/view.json new file mode 100644 index 0000000..4f8d4dc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/view.json @@ -0,0 +1,296 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "card_view", + "start_time": { + "$": [ + "ts", + 192, + 1754319546004 + ], + "$ts": 1754319545822 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.logger.callLogger(self, \u0027page\u0027)\n\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "page_name": "Home" + }, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + }, + "params.page_name": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "1080px" + }, + "props": { + "alignContent": "flex-start", + "alignItems": "flex-start", + "elementPosition": { + "grow": 0, + "shrink": 0 + }, + "instances": [ + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Bulk Inbound", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM05", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Fluid Inbound", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM04", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Fluid Inbound", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM03", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Sorter Destination and Chutes", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM02", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Sorter Destination, Chutes and Bypass", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + ], + "path": "Symbol-Views/Controller-Views/ControllerStatus", + "style": { + "overflow": "visible" + }, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "custom": { + "Devices": [ + [ + "MCM01", + "Bulk Inbound" + ], + [ + "MCM02", + "Fluid Inbound" + ], + [ + "MCM03", + "Fluid Inbound" + ], + [ + "MCM05", + "Sorter Destination and Chutes" + ], + [ + "MCM04", + "Sorter Destination, Chutes and Bypass" + ] + ], + "count": "value", + "delay": 2000, + "run_update": true + }, + "events": { + "system": { + "onStartup": [ + { + "config": { + "script": "\tVisualisation.home_page.create_home_page(self)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\tsession_id \u003d self.session.props.id\n\tpage_id \u003d self.view.params.page_name\n\tCommands.analytics.send_page_details(whid, session_id, page_id)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "root" + }, + "propConfig": { + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\n if (self.session.custom.fc \u003d\u003d \u0027\u0027) or (self.session.custom.fc is None):\n \tself.getChild(\"FlexRepeater\").props.instances \u003d []\n \treturn\n \n if self.custom.run_update:\n \tVisualisation.home_page.update_home_status(self)\n# system_tags \u003d system.tag.readBlocking([\"Configuration/FC\", \"System/ActiveAlarms\"])\n# tag_provider \u003d \"[%s_SCADA_TAG_PROVIDER]\" % (system_tags[0].value)\n# status_decoded \u003d system.util.jsonDecode(self.session.custom.id_to_state)\n# if status_decoded:\n#\t values \u003d []\n#\t devices \u003d self.custom.Devices\n#\t for i in devices:\n#\t \tvalue \u003d status_decoded.get(i)\n#\t \tif value \u003d\u003d None:\n#\t \t\tvalues.append(5)\n#\t \telse:\n#\t \t\tvalues.append(value)\n#\t zipped_list \u003d zip(values, devices)\n#\t devices_sorted \u003d [y for x,y in sorted(zipped_list)]\n#\t for i,j in enumerate(devices_sorted):\n#\t try:\n#\t \tself.getChild(\"FlexRepeater\").props.instances[i].tagProps[0] \u003d j\n#\t except:\n#\t \tsystem.perspective.print(i)" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/resource.json new file mode 100644 index 0000000..299dd9b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "1275caebf510817f2ffed8e8acfbfc85ed512fd6c0c6777f7e95be3f56ffdcd5" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/thumbnail.png new file mode 100644 index 0000000..b64e1f9 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/view.json new file mode 100644 index 0000000..316cac6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/view.json @@ -0,0 +1,55 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontSize": 22, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "MONITRON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Monitron/monitron_data" + }, + "type": "tag" + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/resource.json new file mode 100644 index 0000000..738d6fc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "cdc246200ba1360e6c61fd94bc2239629fdf2d3c15cf07f9b8794127e3251dc0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/thumbnail.png new file mode 100644 index 0000000..bc6ead2 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/view.json new file mode 100644 index 0000000..143c105 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/view.json @@ -0,0 +1,2890 @@ +{ + "custom": { + "EntriesList": [ + { + "PrimaryKey": "2024-05-08 10:17:51", + "author": "pll", + "body": "Introducing our brand new Announcement Feature! 🎉 Stay in the loop with important updates, new features, planned downtime events, all in one place. Never miss out again! Check it out now and stay tuned for the latest updates. 🔊", + "childproj": "https://eu-preprod.scada2.rme.amazon.dev: MAN2", + "expire": "2024-05-09 05:00:00", + "link1": "https://", + "link1title": "", + "link2": "https://", + "link2title": "", + "priority": "Healthy", + "publish": "2024-05-08 10:08:33", + "title": "📢 Exciting News! 📢", + "whids": "" + } + ], + "PreviewJSON": [ + { + "author": "cojonas", + "body": "", + "childproj": "https://eu-development.scada2.rme.amazon.dev:", + "expire": "2024-05-08 05:00:00", + "link1": "https://", + "link1title": "", + "link2": "https://", + "link2title": "", + "publish": "2024-04-26 07:07:32", + "title": "" + } + ], + "TableSelection": null, + "activityLogger": { + "alt_pageid": "notifyTool", + "start_time": { + "$": [ + "ts", + 192, + 1715164768393 + ], + "$ts": 1715164768393 + } + }, + "body": "", + "entryCount": 0, + "expire": "2024-05-09 05:00:00", + "fileName": "Notifications_as of 2024-4-8_10_40_3.xlsx", + "link1": "https://", + "link1title": "", + "link2": "https://", + "link2title": "", + "priority": "Healthy", + "publish": "2024-05-08 10:39:28", + "title": "", + "whids": "" + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\t\t\n\tfrom datetime import datetime, timedelta\n\t\n\tself.custom.activityLogger.start_time \u003d system.date.now()\n\t\n\tsystem.perspective.sendMessage(\u0027refreshNotifyIcon\u0027)\n\tsystem.perspective.sendMessage(\u0027refreshNotifyTable\u0027)\n\tdt \u003d datetime.today()\n\tself.getChild(\"root\").getChild(\"FlexContainer\").getChild(\"FlexContainer_Left\").getChild(\"FlexContainer\").getChild(\"Publish-DateTimeInput\").props.value \u003d dt\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "propConfig": { + "custom.EntriesList": { + "persistent": true + }, + "custom.PreviewJSON": { + "persistent": true + }, + "custom.TableSelection": { + "binding": { + "config": { + "path": "/root/FlexContainer_4/FlexContainer/Table.props.selection.data[0]" + }, + "type": "property" + }, + "persistent": true + }, + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": " if value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n return self.custom.activityLogger.alt_pageid.lower()\n else:\n return value[1:].lower()\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + }, + "custom.body": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Middle/FlexContainer_0/Body-TextArea.props.text" + }, + "type": "property" + }, + "persistent": true + }, + "custom.entryCount": { + "persistent": true + }, + "custom.expire": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Left/FlexContainer_0/Expire-DateTimeInput.props.formattedValue" + }, + "type": "property" + }, + "persistent": true + }, + "custom.fileName": { + "binding": { + "config": { + "expression": "\r\n\u0027Notifications_as of \u0027\r\n+ dateExtract(now(),\u0027year\u0027) +\u0027-\u0027\r\n+ dateExtract(now(),\u0027month\u0027) +\u0027-\u0027\r\n+ dateExtract(now(),\u0027day\u0027) +\u0027_\u0027\r\n+ dateExtract(now(),\u0027hour\u0027) +\u0027_\u0027\r\n+ dateExtract(now(),\u0027minute\u0027) +\u0027_\u0027\r\n+ dateExtract(now(),\u0027second\u0027)+\u0027.xlsx\u0027" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.link1": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Right/FlexContainer/FlexContainer_2/FlexContainer/URL1-TextField.props.text" + }, + "transforms": [ + { + "code": "#\tif len(value) \u003e0:\n\tif \u0027http://\u0027 not in value and \u0027https://\u0027 not in value:\n\t\tvalue \u003d \u0027https://\u0027+value\n\n\t\treturn value\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.link1title": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Right/FlexContainer/FlexContainer_2/FlexContainer_0/URL1-NameTextField.props.text" + }, + "type": "property" + }, + "persistent": true + }, + "custom.link2": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Right/FlexContainer/FlexContainer_3/FlexContainer/URL2-TextField.props.text" + }, + "transforms": [ + { + "code": "#\tif len(value) \u003e0:\n\tif \u0027http://\u0027 not in value and \u0027https://\u0027 not in value:\n\t\tvalue \u003d \u0027https://\u0027+value\n\n\t\treturn value\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.link2title": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Right/FlexContainer/FlexContainer_3/FlexContainer_0/URL2-NameTextField.props.text" + }, + "transforms": [ + { + "code": "#\tif len(value) \u003e0:\n\treturn value", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Left/FlexContainer_2/Dropdown.props.value" + }, + "type": "property" + }, + "persistent": true + }, + "custom.publish": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Left/FlexContainer/Publish-DateTimeInput.props.formattedValue" + }, + "type": "property" + }, + "persistent": true + }, + "custom.title": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Middle/FlexContainer/Title-TextField.props.text" + }, + "type": "property" + }, + "persistent": true + }, + "custom.whids": { + "binding": { + "config": { + "path": "/root/FlexContainer/FlexContainer_Left/FlexContainer_1/WHID-TextArea.props.text" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "108px" + }, + "props": { + "text": "Publish Date", + "textStyle": { + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Publish-DateTimeInput", + "tooltip": { + "enabled": true, + "location": "top-left", + "sustain": 2000 + } + }, + "position": { + "basis": "170px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.props.minDate" + }, + "transforms": [ + { + "code": "\t\n\tmsg \u003d \u0027Time is UTC. Minimum publish date is \u0027 +str(value)\n\t\n\treturn msg", + "type": "script" + } + ], + "type": "property" + } + }, + "props.minDate": { + "binding": { + "config": { + "expression": "midnight(addDays(now(),-1))" + }, + "type": "expr" + } + } + }, + "props": { + "format": "YYYY-MM-DD hh:mm:ss", + "formattedValue": "2024-05-08 10:39:28", + "value": { + "$": [ + "ts", + 192, + 1715164768393 + ], + "$ts": 1715164768393 + } + }, + "type": "ia.input.date-time-input" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "108px" + }, + "props": { + "text": "Expire Date", + "textStyle": { + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Expire-DateTimeInput", + "tooltip": { + "enabled": true, + "location": "top-left", + "sustain": 2000 + } + }, + "position": { + "basis": "170px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": ".../FlexContainer/Publish-DateTimeInput.props.value" + }, + "transforms": [ + { + "code": "\t\n\tmsg \u003d \u0027Time is UTC. Minimum expire date is \u0027 +str(value)\n\t\n\treturn msg", + "type": "script" + } + ], + "type": "property" + } + }, + "props.minDate": { + "binding": { + "config": { + "path": ".../FlexContainer/Publish-DateTimeInput.props.value" + }, + "transforms": [ + { + "code": "\tfrom datetime import datetime, timedelta\n\tdt \u003d datetime.today()\n\t\n\treturn dt", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD hh:mm:ss", + "formattedValue": "2024-05-09 05:00:00", + "value": { + "$": [ + "ts", + 0, + 1714766194471 + ], + "$ts": 1715274000000 + } + }, + "type": "ia.input.date-time-input" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "TextArea" + }, + "position": { + "basis": "308px", + "display": false + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "type": "property" + } + } + }, + "type": "ia.input.text-area" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "152px" + }, + "props": { + "text": "WHID\u0027s", + "textStyle": { + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "WHID-TextArea", + "tooltip": { + "enabled": true, + "location": "top-left", + "sustain": 2000, + "text": "Enter WHID\u0027s for WHID specific notifications, blank for all WHID\u0027s" + } + }, + "position": { + "basis": "240px" + }, + "type": "ia.input.text-area" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "152px" + }, + "props": { + "text": "Priority", + "textStyle": { + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "256px" + }, + "propConfig": { + "props.options": { + "binding": { + "config": { + "path": "session.custom.colours.colour_impaired" + }, + "transforms": [ + { + "code": "\n\theaders \u003d [\u0027Priority\u0027] \n\tstates \u003d [[\u0027Healthy\u0027],[\u0027Diagnostic\u0027], [\u0027Low\u0027], [\u0027Medium\u0027], [\u0027High\u0027]]\n\tdataset \u003d system.dataset.toDataSet(headers, states)\n\t\n\treturn dataset", + "type": "script" + } + ], + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.value" + }, + "transforms": [ + { + "fallback": "state5", + "inputType": "scalar", + "mappings": [ + { + "input": "Healthy", + "output": "state5" + }, + { + "input": "Diagnostic", + "output": "state4" + }, + { + "input": "Low", + "output": "state3" + }, + { + "input": "Medium", + "output": "state2" + }, + { + "input": "High", + "output": "state1" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "code": "\tprefix \u003d self.session.custom.colours[value]\n\treturn prefix", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontWeight": "bold" + }, + "value": "Healthy" + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_Left" + }, + "position": { + "basis": "300px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "97px" + }, + "props": { + "text": "Title", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Title-TextField", + "tooltip": { + "enabled": true, + "location": "top-left", + "sustain": 2000 + } + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "code": "\ttooltip \u003d \u0027Required Field, Character count: \u0027 + str(len(value))\n\t\n\treturn tooltip", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "placeholder": "Enter Title" + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "97px" + }, + "props": { + "text": "Body", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Body-TextArea", + "tooltip": { + "enabled": true, + "location": "top-left", + "sustain": 2000 + } + }, + "position": { + "basis": "240px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "code": "\ttooltip \u003d \u0027Required Field, Character count: \u0027 + str(len(value))\n\t\n\treturn tooltip", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "placeholder": "Enter Notification Text", + "rejectUpdatesWhileFocused": false, + "resize": "vertical", + "wrap": "hard" + }, + "type": "ia.input.text-area" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "143px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "custom": { + "PreviewJSON": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmsg \u003d {\u0027instances\u0027:[{\u0027title\u0027:self.view.custom.title, \n\t\t\u0027body\u0027:self.view.custom.body,\n\t\t\u0027publish\u0027:str(self.view.custom.publish)[:19],\n\t\t\u0027expire\u0027:str(self.view.custom.expire)[:19],\n\t\t\u0027link1\u0027:self.view.custom.link1,\n\t\t\u0027link1title\u0027:self.view.custom.link1title,\n\t\t\u0027link2\u0027:self.view.custom.link2,\n\t\t\u0027link2title\u0027:self.view.custom.link2title,\n\t\t\u0027author\u0027:self.session.props.auth.user.userName,\n\t\t\u0027priority\u0027:self.view.custom.priority,\n\t\t\u0027childproj\u0027:self.session.props.gateway.address}],\n\t\t\u0027entryCount\u0027:1}\n#\tself.view.custom.PreviewJSON \u003d value\n\n\tsystem.perspective.openPopup(\u0027jKEJ8tuj34\u0027,\u0027PopUp-Views/Notify-Tool/Notify-Popup\u0027,params\u003dmsg, modal\u003dTrue, resizable\u003dTrue, overlayDismiss\u003dTrue, title\u003d\u0027Notification Preview\u0027)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Preview-Button" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/preview" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Preview" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfrom datetime import datetime\n\timport time\n\tfields \u003d [self.view.custom.body,\n\t\t\t\tself.view.custom.title, \n\t\t\t\tself.view.custom.publish,\n\t\t\t\tself.view.custom.expire,]\n\t\t\t\t\n\twhids \u003d str(self.view.custom.whids.upper())\t\t\t\n\ttry:\n\t\tif \u0027\u0027 not in fields and None not in fields:\n\t\t\tchidproj \u003d self.session.props.gateway.address +\u0027 \u0027+self.session.custom.fc\n\t\t\tnow \u003d datetime.now()\n\t\t\tnowstr \u003d str(now)[:19]\n\t\t\t\n\t\t\tpayload \u003d {\u0027PrimaryKey\u0027:nowstr,\n\t\t\t\t\u0027title\u0027:self.view.custom.title, \n\t\t\t\t\u0027body\u0027:self.view.custom.body,\n\t\t\t\t\u0027publish\u0027:str(self.view.custom.publish)[:19],\n\t\t\t\t\u0027expire\u0027:str(self.view.custom.expire)[:19],\n\t\t\t\t\u0027link1\u0027:self.view.custom.link1,\n\t\t\t\t\u0027link1title\u0027:self.view.custom.link1title,\n\t\t\t\t\u0027link2\u0027:self.view.custom.link2,\n\t\t\t\t\u0027link2title\u0027:self.view.custom.link2title,\n\t\t\t\t\u0027whids\u0027:whids,\n\t\t\t\t\u0027priority\u0027:self.view.custom.priority,\n\t\t\t\t\u0027author\u0027:(self.session.props.auth.user.userName)[:3],\n\t\t\t\t\u0027childproj\u0027:chidproj}\n\t\t\t\t\n#\t\t\tsystem.perspective.print(payload)\n\t\t\tnotifyTool.WriteToDynamo.DynamoWriter(payload)\n\t\t\tsystem.perspective.sendMessage(\u0027refreshNotifyTable\u0027)\n\t\telse:\n\t\t\t\n\t\t\tmsg\u003d {\u0027body\u0027:\u0027Title, Body, Publish date, and Expire date cannot be blank\u0027}\n\t\t\tsystem.perspective.openPopup(\u0027jKEJ8tuj\u0027,\u0027PopUp-Views/Notify-Tool/Notify-Submit-Popup\u0027,params\u003dmsg, modal\u003dTrue, overlayDismiss\u003dTrue, title \u003d \"Whoops, don\u0027t forget the words\")\n\texcept:\n\t\tpass\n\t\t\n\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Submit-Button" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/send" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Submit" + }, + "type": "ia.input.button" + }, + { + "custom": { + "PreviewJSON": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tclear \u003d \u0027\u0027\n\tself.parent.parent.getChild(\"FlexContainer\").getChild(\"Title-TextField\").props.text \u003d clear\n\tself.parent.parent.getChild(\"FlexContainer_0\").getChild(\"Body-TextArea\").props.text \u003d clear\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_2\").getChild(\"FlexContainer\").getChild(\"URL1-TextField\").props.text \u003d clear\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_2\").getChild(\"FlexContainer_0\").getChild(\"URL1-NameTextField\").props.text \u003d clear\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_3\").getChild(\"FlexContainer\").getChild(\"URL2-TextField\").props.text \u003d clear\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_3\").getChild(\"FlexContainer_0\").getChild(\"URL2-NameTextField\").props.text \u003d clear\n\tself.parent.parent.parent.getChild(\"FlexContainer_Left\").getChild(\"FlexContainer_1\").getChild(\"WHID-TextArea\").props.text \u003d clear\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Preview-Button_0" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/format_clear" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Clear" + }, + "type": "ia.input.button" + }, + { + "custom": { + "PreviewJSON": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\trow \u003d self.parent.parent.parent.parent.getChild(\"FlexContainer_4\").getChild(\"FlexContainer\").getChild(\"Table\").props.selection.data[0]\n\t\t\n\tself.parent.parent.getChild(\"FlexContainer\").getChild(\"Title-TextField\").props.text \u003d row[\u0027title\u0027]\n\tself.parent.parent.getChild(\"FlexContainer_0\").getChild(\"Body-TextArea\").props.text \u003d row[\u0027body\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_2\").getChild(\"FlexContainer\").getChild(\"URL1-TextField\").props.text \u003d row[\u0027link1\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_2\").getChild(\"FlexContainer_0\").getChild(\"URL1-NameTextField\").props.text \u003d row[\u0027link1title\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_3\").getChild(\"FlexContainer\").getChild(\"URL2-TextField\").props.text \u003d row[\u0027link2\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Right\").getChild(\"FlexContainer\").getChild(\"FlexContainer_3\").getChild(\"FlexContainer_0\").getChild(\"URL2-NameTextField\").props.text \u003d row[\u0027link2title\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Left\").getChild(\"FlexContainer_1\").getChild(\"WHID-TextArea\").props.text \u003d row[\u0027whids\u0027]\n\tself.parent.parent.parent.getChild(\"FlexContainer_Left\").getChild(\"FlexContainer_2\").getChild(\"Dropdown\").props.value \u003d row[\u0027priority\u0027]" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Populate-Button" + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/upgrade" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Populate" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "space-evenly" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_Middle" + }, + "position": { + "basis": "900px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": 10, + "borderBottomRightRadius": 10, + "borderTopLeftRadius": 10, + "borderTopRightRadius": 10 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "URL1-Label" + }, + "position": { + "basis": "110px" + }, + "props": { + "text": "Link 1", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "URL1-TextField" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "props": { + "placeholder": "Enter Link 1" + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "URL1-NameLabel" + }, + "position": { + "basis": "110px" + }, + "props": { + "style": { + "paddingLeft": 5, + "paddingRight": 5 + }, + "text": "Link 1 Name" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "URL1-NameTextField" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "props": { + "placeholder": "Enter Link 1 Title" + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px" + }, + "props": { + "style": { + "marginBottom": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "basis": "92px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "URL2-Label" + }, + "position": { + "basis": "110px" + }, + "props": { + "text": "Link 2", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "URL2-TextField" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "props": { + "placeholder": "Enter Link 2" + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "style": { + "marginBottom": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "URL2-NameLabel" + }, + "position": { + "basis": "110px" + }, + "props": { + "style": { + "paddingLeft": 5, + "paddingRight": 5 + }, + "text": "Link 2 Name" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "URL2-NameTextField" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "props": { + "placeholder": "Enter Link 2 Title" + }, + "type": "ia.input.text-field" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px" + }, + "props": { + "style": { + "marginBottom": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_3" + }, + "position": { + "basis": "92px" + }, + "props": { + "direction": "column", + "style": { + "borderBottomLeftRadius": 4, + "borderBottomRightRadius": 4, + "borderStyle": "solid", + "borderTopLeftRadius": 4, + "borderTopRightRadius": 4, + "borderWidth": 1, + "classes": "Buttons/Button-Menu", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_Right" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "170px" + }, + "props": { + "style": { + "textAlign": "center" + }, + "text": "Notification Entries" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "40px", + "grow": 1 + }, + "props": { + "justify": "space-around", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + }, + { + "custom": { + "entries": [ + { + "PrimaryKey": "2024-05-08 10:17:51", + "author": "pll", + "body": "Introducing our brand new Announcement Feature! 🎉 Stay in the loop with important updates, new features, planned downtime events, all in one place. Never miss out again! Check it out now and stay tuned for the latest updates. 🔊", + "childproj": "https://eu-preprod.scada2.rme.amazon.dev: MAN2", + "expire": "2024-05-09 05:00:00", + "link1": "https://", + "link1title": "", + "link2": "https://", + "link2title": "", + "priority": "Healthy", + "publish": "2024-05-08 10:08:33", + "title": "📢 Exciting News! 📢", + "whids": "" + } + ], + "entryCount": 1, + "highestPriority": 5 + }, + "events": { + "dom": { + "onClick": { + "config": { + "draggable": true, + "id": "ioNP2CXn", + "modal": true, + "overlayDismiss": true, + "resizable": true, + "showCloseIcon": true, + "title": "Notifications", + "type": "open", + "viewParams": { + "entryCount": "{/root/FlexContainer_4/FlexContainer/FlexContainer_4/Icon.custom.entryCount}", + "instances": "{/root/FlexContainer_4/FlexContainer/FlexContainer_4/Icon.custom.entries}" + }, + "viewPath": "PopUp-Views/Notify-Tool/Notify-Popup", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "location": "bottom-right", + "style": { + "whiteSpace": "pre" + }, + "text": "📢 Exciting News! 📢\n" + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "custom.refreshMSG": { + "binding": { + "config": { + "expression": "now(90000)\r\n// Update property value every 90 seconds, firing change script" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\u0027refreshNotifyIcon\u0027)\n\tsystem.perspective.sendMessage(\u0027refreshNotifyTable\u0027)" + } + }, + "position.display": { + "binding": { + "config": { + "path": "view.custom.EntriesList" + }, + "transforms": [ + { + "code": "\tfrom datetime import datetime\n\t\n#\tRead entries from dynamo table\n\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\tEntriesList \u003d returns[\u0027Items\u0027]\n\t\n\tEntriesList.reverse()\n\n\n#\tCreate empty list and now string\n\tpublishdates \u003d []\n\tnow \u003d datetime.now()\n\tnowstr \u003d str(now)[:19]\n\tactiveNotify \u003d False\n\twhid \u003d self.session.custom.fc\n\tstates \u003d {\u0027Healthy\u0027:5,\u0027Diagnostic\u0027:4, \u0027Low\u0027:3, \u0027Medium\u0027:2, \u0027High\u0027:1}\n\n\tactiveEntries \u003d []\n\ttooltip \u003d []\n\tcount \u003d 0\n\thighestPriority \u003d 5\n\tfor e in EntriesList:\n\t\t\n\t\tif len(e[\u0027whids\u0027])\u003e0:\t\t\t\t# Check for WHID in whid field\n\t\t\tif whid in e[\u0027whids\u0027]:\t\t\t# Check for WHID match in whid field\n\t\t\t\t#\tCheck EntriesList for active entries based on publish and expire times\n\t\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\t\tactiveEntries.append(e)\n\t\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\t\tactiveNotify \u003d True\n\t\t\t\t\tcount +\u003d1\n\t\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\t\telse:\n\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\tactiveEntries.append(e)\n\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\tactiveNotify \u003d True\t\t\n\t\t\t\tcount +\u003d1\t\n\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\n\ttooltiptext \u003d \u0027\u0027\n\tfor i in tooltip:\n\t\ttooltiptext+\u003d i+\u0027\\n\u0027\n\t\t\n\tself.custom.entries \u003d activeEntries\n\tself.custom.highestPriority \u003d highestPriority\n\tself.custom.entryCount \u003d count\n\tself.meta.tooltip.text \u003d tooltiptext\t\n\n\treturn activeNotify", + "type": "script" + } + ], + "type": "property" + } + }, + "props.color": { + "binding": { + "config": { + "path": "this.custom.highestPriority" + }, + "transforms": [ + { + "fallback": "state5", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "state1" + }, + { + "input": 2, + "output": "state2" + }, + { + "input": 3, + "output": "state3" + }, + { + "input": 4, + "output": "state4" + }, + { + "input": 5, + "output": "state5" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "code": "\ttest \u003d self.session.custom.colours.colour_impaired\n\tstatecolor \u003d self.session.custom.colours[value]\n\treturn statecolor", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/campaign", + "style": { + "marginLeft": 5, + "marginRight": 5 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "refreshNotifyIcon", + "pageScope": true, + "script": "\tself.refreshBinding(\u0027position.display\u0027)\n\tself.refreshBinding(\u0027props.color\u0027)\n", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "130px" + }, + "props": { + "style": { + "textAlign": "center" + }, + "text": "Icon Preview" + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tjsonFile \u003d self.parent.parent.getChild(\"Table\").props.data\n\theaders \u003d list(set(jsonFile[0].keys()))\n\t\n\trowdata \u003d []\n\tfor r in jsonFile:\n\t\trow \u003d []\n\t\tfor k in headers:\n\t\t\trow.append(r[k])\n\t\trowdata.append(row)\n\t\n\tdataset \u003d system.dataset.toDataSet(headers, rowdata)\n\tdatasetexcel \u003d system.dataset.toExcel(True, [dataset])\n\t\n\tfilename \u003d self.view.custom.fileName\n\tsystem.perspective.download(filename, datasetexcel)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Retrieve_Test_0", + "tooltip": { + "enabled": true, + "text": "Download Table as Excel" + } + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/cloud_download" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Download" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttry:\n\t\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\t\tself.view.custom.EntriesList \u003d returns[\u0027Items\u0027]\n\n\texcept:\n\t\tsystem.perspective.print(\u0027Error manual refreshing from Dynamo Table\u0027)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Retrieve_Test", + "tooltip": { + "enabled": true, + "text": "Manual Refresh of Table" + } + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/get_app" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Refresh" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t\n\tPK \u003d self.view.custom.TableSelection[\u0027PrimaryKey\u0027]\n\tPub \u003d self.view.custom.TableSelection[\u0027publish\u0027]\n\n\treturns \u003d notifyTool.DeleteFromDynamo.DynamoDeleter(PrimaryKey\u003dPK,publish\u003dPub)\n\tsystem.perspective.sendMessage(\u0027refreshNotifyTable\u0027)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Delete-Button", + "tooltip": { + "enabled": true, + "text": "Permanently Delete selected entry" + } + }, + "position": { + "basis": "115px" + }, + "props": { + "image": { + "icon": { + "path": "material/delete_forever" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Delete" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer_4" + }, + "position": { + "basis": "40px" + }, + "props": { + "justify": "flex-end" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "view.custom.EntriesList" + }, + "type": "property" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Priority" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 60 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "PrimaryKey", + "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": "Submit Date" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "descending", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "publish", + "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": "Publish Date" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "ascending", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "expire", + "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": "Expire Date" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "title", + "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": "Title" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "Body" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "body", + "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": "Body" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 450 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "author", + "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": "Author" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "link1title", + "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": "Link 1 Title" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "link1", + "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": "Link 1" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "link2title", + "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": "Link 2 Title" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "link2", + "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": "Link 2" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "overflowWrap": "break-word" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": "falseq", + "field": "childproj", + "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": "Published from:" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "overflowWrap": "break-word" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "whids", + "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": "WHID Specific" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "rows": { + "style": { + "marginBottom": 2.5, + "marginTop": 2.5, + "overflowWrap": "break-word" + } + }, + "sortOrder": [ + "PrimaryKey", + "publish" + ], + "style": { + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "refreshNotifyTable", + "pageScope": true, + "script": "\ttry:\n\t\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\t\tself.view.custom.EntriesList \u003d returns[\u0027Items\u0027]\n\t\tself.refreshBinding(\u0027props.data\u0027)\n\t\t# implement your handler here\n\texcept:\n\t\tsystem.perspective.print(\u0027Error updating Notification Table\u0027)", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_4" + }, + "position": { + "basis": "1300px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\n\troles \u003d [\u0027Authenticated/Roles/eurme-ignition-admins\u0027]\n\tauth \u003d system.perspective.isAuthorized(False, securityLevels\u003droles)\n\treturn auth", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/resource.json new file mode 100644 index 0000000..182f116 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "463cef980c8f9382ddd5f79dccf59875a7c7783c65cb4a790a55487f67240a8e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/thumbnail.png new file mode 100644 index 0000000..235ed32 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/view.json new file mode 100644 index 0000000..05d8d29 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/view.json @@ -0,0 +1,55 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontSize": 22, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "OIL MONITORING" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Oil/oil_condition_monitoring" + }, + "type": "tag" + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/resource.json new file mode 100644 index 0000000..68d7fdc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "38a39929a61fe13d7907a036c71360717c8f1fb4e50a1147b8f7358bc2df413a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/thumbnail.png new file mode 100644 index 0000000..f91e7a5 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/view.json new file mode 100644 index 0000000..e35b3d6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/view.json @@ -0,0 +1,918 @@ +{ + "custom": { + "api_region_name": "eu", + "api_stage": "prod", + "enable_site_selection": true, + "help_url": "https://w.amazon.com/bin/view/EURME/MAP/Projects/Amazon_SCADA/Expanding_BU_and_New_Regions_SCADA/AMZL/DeveloperGuide/#H7.1SCADAFileManagementUtility", + "image_file_container_basis": "50%", + "image_file_content_shown": true, + "image_file_prefix": "SCADA//images/", + "image_file_suffix": ".svg", + "instances_file_prefix": "SCADA/EWR4/instance_configs/", + "loading": false, + "migrate_enabled": false, + "selected_image": null, + "selected_whid": "", + "site_folder": "SCADA//", + "site_image_list": [], + "site_source_list": [], + "source_file_container_basis": "50%", + "source_file_content_shown": true, + "source_file_prefix": "SCADA//source/", + "source_file_suffix": ".drawio", + "stage_config": { + "account_id": "006306898152", + "api_call_role": "arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-eu-west-1", + "endpoint": "https://eu-west-1.scada-s3-management.scada.eurme.amazon.dev/", + "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", + "region": "eu-west-1", + "repo_bucket": "ignition-image-repo", + "s3_region": "eu-west-1", + "source_bucket": "ignition-image-source" + }, + "title_text": "S3 File Management", + "upload_enabled": true, + "user_roles": [ + "rme-ctrl-map-all", + "rme-ctrl-all", + "rme-grt-all", + "na-rme-all", + "watrmecomms-l4-l8-bb-all", + "eurme-ignition-developers", + "eurme-ignition-admins", + "eurme-ignition-managers", + "eurme-ignition-users", + "maplab-rme-all", + "eurme-ignition-ae-india" + ], + "whid": "" + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tselected_image \u003d self.params.selected_image\n\tself.custom.selected_image \u003d selected_image\n\tselected_site \u003d self.params.selected_site\n\tif not selected_site:\n\t\tselected_site \u003d self.custom.whid\n\tself.custom.selected_whid \u003d selected_site" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "selected_image": null, + "selected_site": null + }, + "propConfig": { + "custom.api_region_name": { + "binding": { + "config": { + "path": "session.custom.aws.prefix" + }, + "type": "property" + }, + "persistent": true + }, + "custom.api_stage": { + "persistent": true + }, + "custom.enable_site_selection": { + "binding": { + "config": { + "expression": "isAuthorized(false, \u0027Authenticated/Roles/eurme-ignition-developers\u0027)" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.help_url": { + "persistent": true + }, + "custom.image_file_container_basis": { + "binding": { + "config": { + "expression": "if(!{view.custom.image_file_content_shown},\u0027auto\u0027,\r\n\tif({view.custom.source_file_content_shown},\u002750%\u0027,\u0027100%\u0027))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.image_file_content_shown": { + "binding": { + "config": { + "path": "/root/FlexContainer File Configs/Image File Config.props.params.content_shown" + }, + "type": "property" + }, + "persistent": true + }, + "custom.image_file_prefix": { + "binding": { + "config": { + "expression": "{view.custom.site_folder}+\u0027images/\u0027" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.image_file_suffix": { + "persistent": true + }, + "custom.loading": { + "persistent": true + }, + "custom.migrate_enabled": { + "binding": { + "config": { + "expression": "{view.custom.flow_view_edit_mode.reviewer_enabled}\r\n\u0026\u0026!isNull({view.custom.stage_source})\r\n\u0026\u0026len({view.custom.stage_source})\r\n\u0026\u0026!isNull({view.custom.stage_destination})\r\n\u0026\u0026len({view.custom.stage_destination})" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.selected_image": { + "persistent": true + }, + "custom.selected_whid": { + "onChange": { + "enabled": null, + "script": "\t# DEVNOTE: During peer review, noticed that when files are selected and then \n\t# the whid is changed, that a loop of file updates can be triggered\n\t# therefore, clear the \"selected_image\" custom prop on whid change\n\tself.custom.selected_image \u003d None\n\t" + }, + "persistent": true + }, + "custom.site_folder": { + "binding": { + "config": { + "expression": "stringFormat(\u0027SCADA/%s/\u0027, {view.custom.selected_whid})" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.site_image_list": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "transforms": [ + { + "code": "\tif not value:\n\t\treturn []\n\tfrom AWS.s3 import S3Manager\n\t\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.custom.api_region_name\n\t\n\ts3m \u003d S3Manager(api_region_name\u003dapi_region_name, username\u003dusername)\n\t\n\tsite \u003d value\n\tbucket \u003d self.custom.stage_config.repo_bucket\n\t\n\treturn s3m.fetch_object_list_by_site_and_bucket(site, bucket)", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.site_source_list": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "transforms": [ + { + "code": "\tif not value:\n\t\treturn []\n\tfrom AWS.s3 import S3Manager\n\t\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.custom.api_region_name\n\t\n\ts3m \u003d S3Manager(api_region_name\u003dapi_region_name, username\u003dusername)\n\t\n\tsite \u003d value\n\tbucket \u003d self.custom.stage_config.source_bucket\n\t\n\treturn s3m.fetch_object_list_by_site_and_bucket(site, bucket)", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.source_file_container_basis": { + "binding": { + "config": { + "expression": "if(!{view.custom.source_file_content_shown},\u0027auto\u0027,\r\n\tif({view.custom.image_file_content_shown},\u002750%\u0027,\u0027100%\u0027))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.source_file_content_shown": { + "binding": { + "config": { + "path": "/root/FlexContainer File Configs/Source File Config.props.params.content_shown" + }, + "type": "property" + }, + "persistent": true + }, + "custom.source_file_prefix": { + "binding": { + "config": { + "expression": "{view.custom.site_folder}+\u0027source/\u0027" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.source_file_suffix": { + "persistent": true + }, + "custom.stage_config": { + "binding": { + "config": { + "expression": "{view.custom.api_region_name}" + }, + "transforms": [ + { + "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.title_text": { + "persistent": true + }, + "custom.upload_enabled": { + "persistent": true + }, + "custom.user_roles": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "type": "property" + }, + "persistent": true + }, + "custom.whid": { + "binding": { + "config": { + "path": "session.custom.fc" + }, + "type": "property" + }, + "persistent": true + }, + "params.selected_image": { + "paramDirection": "input", + "persistent": true + }, + "params.selected_site": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 825, + "width": 1200 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Header" + }, + "position": { + "grow": 1 + }, + "props": { + "style": { + "opacity": "0.73", + "overflow": "auto", + "textShadow": "#AAAAAA 1px 2px 2px" + }, + "text": "S3 SCADA File Management", + "textStyle": { + "fontSize": 30, + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "newTab": true, + "url": "{view.custom.help_url}" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "text": "View documentation for this tool" + } + }, + "position": { + "basis": "30px" + }, + "props": { + "path": "material/help_outline", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Header" + }, + "position": { + "basis": "75px", + "shrink": 0 + }, + "props": { + "justify": "center", + "style": { + "classes": "Framework/Card/Title_transparent", + "textTransform": "capitalize" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Folder Config" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.params.params.enables.site": { + "binding": { + "config": { + "path": "view.custom.enable_site_selection" + }, + "type": "property" + } + }, + "props.params.params.image_count": { + "binding": { + "config": { + "expression": "try(len({view.custom.site_image_list}),0)" + }, + "type": "expr" + } + }, + "props.params.params.selected_whid": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "type": "property" + } + }, + "props.params.params.source_count": { + "binding": { + "config": { + "expression": "try(len({view.custom.site_source_list}),0)" + }, + "type": "expr" + } + } + }, + "props": { + "params": { + "open_expanded": true, + "params": { + "enables": {} + }, + "path": "Objects/Templates/S3/Management/manage", + "show_box_shadow_on_expanded": true, + "title": "Bucket Configuration", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Site Config" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.params.params.enables.site": { + "binding": { + "config": { + "path": "view.custom.enable_site_selection" + }, + "type": "property" + } + }, + "props.params.params.image_count": { + "binding": { + "config": { + "expression": "try(len({view.custom.site_image_list}),0)" + }, + "type": "expr" + } + }, + "props.params.params.selected_whid": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "type": "property" + } + }, + "props.params.params.source_count": { + "binding": { + "config": { + "expression": "try(len({view.custom.site_source_list}),0)" + }, + "type": "expr" + } + } + }, + "props": { + "params": { + "open_expanded": true, + "params": { + "enables": {} + }, + "path": "Objects/Templates/S3/Management/site", + "show_box_shadow_on_expanded": true, + "title": "Site Configuration", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer Site" + }, + "position": { + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Image File Config" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "path": "view.custom.image_file_container_basis" + }, + "type": "property" + } + }, + "props.params.params.bucket": { + "binding": { + "config": { + "path": "view.custom.stage_config.repo_bucket" + }, + "type": "property" + } + }, + "props.params.params.enables.delete": { + "binding": { + "config": { + "path": "view.custom.upload_enabled" + }, + "type": "property" + } + }, + "props.params.params.enables.upload": { + "binding": { + "config": { + "path": "view.custom.upload_enabled" + }, + "type": "property" + } + }, + "props.params.params.files": { + "binding": { + "config": { + "path": "view.custom.site_image_list" + }, + "type": "property" + } + }, + "props.params.params.prefix": { + "binding": { + "config": { + "path": "view.custom.image_file_prefix" + }, + "type": "property" + } + }, + "props.params.params.selected_file": { + "binding": { + "config": { + "path": "view.custom.selected_image" + }, + "type": "property" + } + }, + "props.params.params.suffix": { + "binding": { + "config": { + "path": "view.custom.image_file_suffix" + }, + "type": "property" + } + }, + "props.params.params.whid": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "anchor_position": "left", + "content_shown": true, + "open_expanded": true, + "params": { + "enables": { + "download": true, + "file": true, + "object_key": false + }, + "upload_file_types": [ + "svg" + ] + }, + "path": "Objects/Templates/S3/Management/file", + "show_box_shadow_on_expanded": true, + "title": "Image SVG Files", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent_with_Anchor", + "style": { + "overflow": "auto" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Source File Config" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "path": "view.custom.source_file_container_basis" + }, + "type": "property" + } + }, + "props.params.params.bucket": { + "binding": { + "config": { + "path": "view.custom.stage_config.source_bucket" + }, + "type": "property" + } + }, + "props.params.params.enables.delete": { + "binding": { + "config": { + "path": "view.custom.upload_enabled" + }, + "type": "property" + } + }, + "props.params.params.enables.upload": { + "binding": { + "config": { + "path": "view.custom.upload_enabled" + }, + "type": "property" + } + }, + "props.params.params.files": { + "binding": { + "config": { + "path": "view.custom.site_source_list" + }, + "type": "property" + } + }, + "props.params.params.prefix": { + "binding": { + "config": { + "path": "view.custom.source_file_prefix" + }, + "type": "property" + } + }, + "props.params.params.selected_file": { + "binding": { + "config": { + "path": "view.custom.selected_image" + }, + "type": "property" + } + }, + "props.params.params.suffix": { + "binding": { + "config": { + "path": "view.custom.source_file_suffix" + }, + "type": "property" + } + }, + "props.params.params.whid": { + "binding": { + "config": { + "path": "view.custom.selected_whid" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "anchor_position": "right", + "content_shown": true, + "open_expanded": true, + "params": { + "enables": { + "download": true, + "file": true, + "object_key": false + }, + "upload_file_types": [ + "drawio" + ] + }, + "path": "Objects/Templates/S3/Management/file", + "show_box_shadow_on_expanded": true, + "title": "Source DRAWIO Files", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent_with_Anchor", + "style": { + "overflow": "auto" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer File Configs" + }, + "position": { + "shrink": 0 + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "newTab": true, + "url": "{view.custom.help_url}" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button Documentation", + "tooltip": { + "enabled": true, + "location": "bottom", + "text": "View online documentation for this utility" + } + }, + "props": { + "image": { + "icon": { + "path": "material/info" + } + }, + "primary": false, + "style": { + "margin": "4px", + "padding": "4px" + }, + "text": "Documentation" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsite \u003d self.view.params.selected_site\n\tnull \u003d None\n\tquery_params \u003d {\n\t\t\"copy_option\": null,\n\t\t\"destination_view\": null,\n\t\t\"destination_site\": site,\n\t\t\"destination_bucket\": null,\n\t\t\"end_time\": null,\n\t\t\"error_occurred\": null,\n\t\t\"operation\": null,\n\t\t\"source_view\": null,\n\t\t\"source_site\": null,\n\t\t\"source_bucket\": null,\n\t\t\"start_time\": null,\n\t\t\"username\": self.session.props.auth.user.userName\n\t}\n\t# Open audit log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Audit/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Audit Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA Audit Logs\u0027)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button Audit Log", + "tooltip": { + "enabled": true, + "location": "bottom", + "text": "View SCADA S3 audit logs for current user and site" + } + }, + "props": { + "image": { + "icon": { + "path": "material/table_view" + } + }, + "primary": false, + "style": { + "margin": "4px", + "padding": "4px" + }, + "text": "Audit Logs" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# build out the object key from repo bucket, site, selected view, and suffix\n\tbucket \u003d self.view.custom.stage_config.repo_bucket\n\tsite \u003d self.view.params.selected_site\n\tprefix \u003d self.view.custom.source_file_prefix\n\tview \u003d self.view.params.selected_image\n\tsuffix \u003d self.view.custom.image_file_suffix\n\tobj_key \u003d \u0027%s%s%s\u0027 % (prefix, view, suffix)\n\t# build out query params from local variables\n\tquery_params \u003d {\n\t\t\"view\": view,\n\t\t\"object_key\": obj_key,\n\t\t\"site\": site,\n\t\t\"bucket\": bucket\n\t}\n\t# Open version history log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Versions/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Version Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA S3 Version History Log Viewer\u0027)\n\t\t\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button Version History", + "tooltip": { + "enabled": true, + "location": "bottom", + "text": "View SCADA S3 version history for currently selected file" + } + }, + "props": { + "image": { + "icon": { + "path": "material/history" + } + }, + "primary": false, + "style": { + "margin": "4px", + "padding": "4px" + }, + "text": "Version History" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer Buttons" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "props": { + "justify": "flex-end" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px", + "grow": 1, + "shrink": 0 + }, + "props": { + "direction": "column", + "justify": "flex-end" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [ + { + "name": "show_confirm_dialog", + "params": [], + "script": "\t# ~~ 12 PARAMETERS ~~\n\t\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t\t# show close button\t\t(default \u003d true) boolean\n\t\t# btn text primary\t\t(default \u003d \"Primary\")\n\t\t# btn text secondary\t(default \u003d \"Secondary\")\n\t\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t\n\t\tmsg \u003d \"Update Instance Configuration for MP%s?\" % (self.view.params.instance.viewParams.mhe_id)\n\t\tAlerts.showAlert(\n\t\t\t\"info\", \n\t\t\t\"Update Instance Config?\", \n\t\t\tmsg, \n\t\t\t\"true\",\n\t\t\t\"Continue\", \n\t\t\t\"Cancel\", \n\t\t\t\"chevron_right\", \n\t\t\t\"\", \n\t\t\t\"right\", \n\t\t\t\"confirm_update_instance_config\", \n\t\t\t\"closePopup\", \n\t\t\t\"closePopup\"\n\t\t)\n\t\t" + }, + { + "name": "show_success_dialog", + "params": [ + "msg\u003dNone" + ], + "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"Instance Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t" + }, + { + "name": "show_warning_dialog", + "params": [ + "msg\u003dNone" + ], + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"Instance Not Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t" + }, + { + "name": "show_error_dialog", + "params": [ + "msg\u003dNone" + ], + "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"Instance Update Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t" + }, + { + "name": "update_bindings", + "params": [], + "script": "\tself.view.custom.loading \u003d False\n\t\t" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update_selected_whid", + "pageScope": false, + "script": "\t# implement your handler here\n\tself.view.custom.selected_whid \u003d payload.get(\u0027whid\u0027, None)\n", + "sessionScope": true, + "viewScope": true + }, + { + "messageType": "update_selected_image", + "pageScope": false, + "script": "\t# implement your handler here\n\tself.view.custom.selected_image \u003d payload.get(\u0027image\u0027, None)\n\t", + "sessionScope": true, + "viewScope": true + }, + { + "messageType": "update_file_binding", + "pageScope": false, + "script": "\t# update the appropriate binding to fetch an updated dataset of S3 objects,\n\t# depending upon which bucket was updated\n\tbucket \u003d payload.get(\u0027bucket\u0027, None)\n\tif bucket \u003d\u003d self.view.custom.stage_config.repo_bucket:\n\t\tself.view.refreshBinding(\u0027custom.site_image_list\u0027)\n\tif bucket \u003d\u003d self.view.custom.stage_config.source_bucket:\n\t\tself.view.refreshBinding(\u0027custom.site_source_list\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/resource.json new file mode 100644 index 0000000..07a0b62 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "85b7d1a5176c5cebb31fcb9cc9bc525a6e57fd93988220e34b316de50a13e60b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/thumbnail.png new file mode 100644 index 0000000..af3cfd9 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/view.json new file mode 100644 index 0000000..cc715fc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/view.json @@ -0,0 +1,55 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontSize": 22, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "TEMPERATURE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Table" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Temperature/temperature_monitoring" + }, + "type": "tag" + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/resource.json new file mode 100644 index 0000000..42e726e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "5849ec085e885ea4fafc6e3ced0ab4a50a87e27273b8e4b04c68d28e3ff46227" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/thumbnail.png new file mode 100644 index 0000000..668d679 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/view.json new file mode 100644 index 0000000..55d867a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/view.json @@ -0,0 +1,155 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "tools", + "start_time": { + "$": [ + "ts", + 192, + 1716471122012 + ], + "$ts": 1716471122012 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.session.custom.view_in_focus \u003d self.page.props.path\n\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{/root.props.currentTabIndex}" + }, + "transforms": [ + { + "code": "\tpageid\u003d self.custom.activityLogger.alt_pageid+\u0027/\u0027+self.getChild(\"root\").props.tabs[value]\n\treturn pageid.replace(\u0027 \u0027,\u0027\u0027)", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "CommissioningTool" + }, + "props": { + "path": "Main-Views/Commissioning Tool/CT_Main" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S3" + }, + "position": { + "tabIndex": 1 + }, + "propConfig": { + "props.params.selected_site": { + "binding": { + "config": { + "path": "session.custom.fc" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "selected_image": null + }, + "path": "Main-Views/S3/manage" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NotifyTool" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "path": "Main-Views/Notify-Tool/Notify-Main" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "path": "Main-Views/Config-Tool/MainView" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\ttry:\n\t\tpageid \u003d self.view.custom.activityLogger.alt_pageid + \u0027/\u0027+ self.props.tabs[previousValue.value]\n\t\tpageid \u003d pageid.replace(\u0027 \u0027,\u0027\u0027)\n\t\tpayload \u003d activityLog.productMetrics.createActivityPayload(self.view, \u0027page\u0027, pageid, pageid)\n\t\tif payload:\n\t\t\tself.view.custom.activityLogger.start_time \u003d system.date.now()\n\t\t\tsystem.perspective.sendMessage(\u0027activityLogger-TabChanged\u0027, payload \u003d payload, scope \u003d \u0027page\u0027)\n\texcept:\n\t\tpass" + } + } + }, + "props": { + "currentTabIndex": 3, + "tabs": [ + "CT", + "S3", + "Notify Tool", + "Site Config" + ] + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "activityLogger-TabChanged", + "pageScope": true, + "script": "\t# implement your handler here\n\tif payload:\n\t\tactivityLog.productMetrics.callActivityLoggerAPI(payload)\n", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.container.tab" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/resource.json new file mode 100644 index 0000000..fb6b860 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "bebfa02d91387e7d6aa0edf993e11061c024172607d6f2fe19b7d5221ae261e7" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/thumbnail.png new file mode 100644 index 0000000..5657bad Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json new file mode 100644 index 0000000..f0787b1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json @@ -0,0 +1,3260 @@ +{ + "custom": { + "MCM": 1, + "currentTable": "ACTIVE", + "page": "", + "view": "" + }, + "params": {}, + "propConfig": { + "custom.MCM": { + "binding": { + "config": { + "expression": "if({view.custom.view} !\u003d \"\", {view.custom.view}, {view.custom.page})" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.currentTable": { + "persistent": true + }, + "custom.page": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.view": { + "binding": { + "config": { + "path": "page.props.primaryView" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 250, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#3B3B3B" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "active-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"ACTIVE\"" + }, + "type": "expr" + } + }, + "props.columns[4].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priorityList": "{this.custom.priorities}" + }, + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d [col for col in ds.columnNames if col !\u003d \"EndTimestamp\"]\n\t\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "NumberID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Number (ID)" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Event Timestamp" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "string", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Active Alarms" + }, + "noFilterResults": { + "text": "No Active Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "hitList-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HITLIST\"" + }, + "type": "expr" + } + }, + "props.columns[5].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarmsWithCount" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data\n", + "type": "script" + } + ], + "type": "query" + } + }, + "props.editingCell": { + "onChange": { + "enabled": null, + "script": "\tall_alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\tshelved_alarms \u003d [alarm for alarm in all_alarms if alarm.isShelved()]\n\t\n\t# Build dataset for table\n\theaders \u003d [\u0027ID\u0027, \u0027StartTimestamp\u0027, \u0027EndTimestamp\u0027, \u0027Duration\u0027, \u0027Description\u0027, \u0027Priority\u0027, \u0027Tag\u0027, \u0027MCM\u0027]\n\tdata \u003d []\n\t\n\tfor alarm in shelved_alarms:\n\t # Calculate duration (time since shelved)\n\t if alarm.activeTime:\n\t duration_ms \u003d system.date.now().getTime() - alarm.activeTime.getTime()\n\t duration_seconds \u003d duration_ms / 1000\n\t hours \u003d int(duration_seconds / 3600)\n\t minutes \u003d int((duration_seconds % 3600) / 60)\n\t seconds \u003d int(duration_seconds % 60)\n\t duration \u003d \"%02d:%02d:%02d\" % (hours, minutes, seconds)\n\t else:\n\t duration \u003d \"00:00:00\"\n\t \n\t # Extract tag name from source\n\t tag_name \u003d alarm.source.split(\u0027/\u0027)[-1] if \u0027/\u0027 in alarm.source else alarm.source\n\t \n\t row \u003d [\n\t str(alarm.id) if hasattr(alarm, \u0027id\u0027) else \u0027\u0027,\n\t alarm.activeTime if alarm.activeTime else system.date.now(),\n\t None, # End timestamp (shelved alarms don\u0027t have end time yet)\n\t duration,\n\t alarm.displayPath if alarm.displayPath else alarm.source,\n\t alarm.priority.name if alarm.priority else \u0027Unknown\u0027,\n\t tag_name,\n\t \u0027System\u0027 # Adjust based on your source format\n\t ]\n\t data.append(row)\n\t\n\t# Create dataset and update the custom property\n\tdataset \u003d system.dataset.toDataSet(headers, data)\n\tself.custom.shelvedAlarmsData \u003d dataset" + } + }, + "props.selection": { + "persistent": true + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "FirstTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#FFFEFE", + "classes": "" + }, + "title": "First Timestamp" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "LastTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "Count", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "activeOption": 5, + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "historical-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HISTORY\"" + }, + "type": "expr" + } + }, + "props.columns[6].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "ID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617512 + ], + "$ts": 1750435156149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "EndTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617511 + ], + "$ts": 1750436956149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "End Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Severity" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "enabled": true, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-first-request", + "pageScope": true, + "script": "\tdata \u003d payload[\"data\"]\n\tinitial_data \u003d payload[\"initial_data\"]\n\tself.props.data \u003d data\n\tself.custom.initial_data \u003d initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "\thistorical_data \u003d payload[\"data\"]\n\tself.props.data \u003d historical_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "load_initial_data", + "pageScope": true, + "script": "\trequest \u003d payload[\"data\"]\n\tsystem.perspective.print(\"initial message received\")\n\tif request \u003d\u003d True:\n\t\tself.props.data \u003d self.custom.initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tif reset \u003d\u003d \"reset\":\n\t\tself.props.data \u003d []\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "1920px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ACTIVE" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "ACTIVE" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HITLIST\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HIT LIST" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HIT LIST" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HISTORY\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HISTORY" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HISTORY" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "props": { + "style": { + "gap": 2 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif self.view.custom.currentTable \u003d\u003d \"\":\n\t\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/resource.json new file mode 100644 index 0000000..68149bc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "47e5361898abd725e0aab3717d222d525eb370c6836496846cfe82bda2043c08" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/thumbnail.png new file mode 100644 index 0000000..a931b07 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/view.json new file mode 100644 index 0000000..35bf13f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/view.json @@ -0,0 +1,954 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 70 + } + }, + "root": { + "children": [ + { + "children": [ + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmap_selected \u003d self.session.custom.alarm_filter.show_map\n\tself.custom.show \u003d False\n\tif not map_selected:\n\t\tsystem.perspective.navigate(\"/\")\n\telse:\n\t\tsystem.perspective.navigate(\"/MAP-Home\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Home", + "tooltip": { + "enabled": true, + "text": "Home" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/home" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Home", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.props.selected \u003d\u003d True and self.page.props.path \u003d\u003d \"/\":\n\t\tsystem.perspective.navigate(\"/MAP-Home\")\n\t\t\n\telif self.page.props.path \u003d\u003d \"/MAP-Home\":\n\t\tsystem.perspective.navigate(\"/\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ToggleSwitch", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "60px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_map" + }, + "transforms": [ + { + "expression": "if({value}, \"Toggle for home card view\", \"Toggle for home detailed view\")", + "type": "expression" + } + ], + "type": "property" + } + }, + "position.display": { + "binding": { + "config": { + "path": "/root.custom.show_home_selector" + }, + "type": "property" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_map" + }, + "type": "property" + } + } + }, + "props": { + "color": { + "background-color": "", + "selected": "#FFFFFF", + "unselected": "#FFFFFF" + }, + "label": { + "position": "left", + "style": { + "classes": "", + "fontSize": "10px" + }, + "text": "Map View" + }, + "style": { + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderColor": "#AAAAAA", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "borderWidth": "0.5px", + "classes": "Buttons/Button-Menu", + "margin": "1px" + } + }, + "type": "ia.input.toggle-switch" + } + ], + "events": { + "dom": { + "onMouseEnter": { + "config": { + "script": "\tself.parent.custom.show_home_selector \u003d True" + }, + "scope": "G", + "type": "script" + }, + "onMouseLeave": { + "config": { + "script": "\tself.parent.custom.show_home_selector \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FlexContainer" + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "expression": "if({parent.custom.show_home_selector} \u003d True, \"130px\", \"70px\")" + }, + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Real-Time\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Alarms", + "tooltip": { + "enabled": true, + "text": "Alarms" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/access_alarm" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Alarms", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\n\tsystem.perspective.openPopup(id \u003d \"Search\", view \u003d \"PopUp-Views/Search\", \n\t\t\t\t\t\t\t\t\t\t\t\tshowCloseIcon \u003d False, modal \u003d True,\n\t\t\t\t\t\t\t\t\t\t\t\tviewportBound \u003d True,\n\t\t\t\t\t\t\t\t\t\t\t\tdraggable \u003d False,\n\t\t\t\t\t\t\t\t\t\t\t\toverlayDismiss \u003d True\n\t\t\t\t\t\t\t\t\t\t\t\t)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "search", + "tooltip": { + "enabled": true, + "text": "Search" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/search" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Search", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tconfig.project_config.reset_highlights(self)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Search off", + "tooltip": { + "enabled": true, + "text": "Search Off" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/search_off" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Search Off", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "IL8RVZ5T", + "modal": true, + "overlayDismiss": true, + "position": { + "relativeLocation": "top-right" + }, + "positionType": "relative", + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewParams": { + "viewFocus": "{session.custom.view_in_focus}" + }, + "viewPath": "PopUp-Views/Detail-View-Filter", + "viewportBound": true + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Filter", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "custom.filters_active": { + "binding": { + "config": { + "expression": "if(!{session.custom.alarm_filter.show_diagnostic} ||\r\n!{session.custom.alarm_filter.show_gateways} ||\r\n!{session.custom.alarm_filter.show_low_alarm} ||\r\n{session.custom.alarm_filter.orderby} ||\r\n!{session.custom.alarm_filter.show_running} ||\r\n!{session.custom.alarm_filter.show_fio} ||\r\n!{session.custom.alarm_filter.show_camera_jams} ||\r\n!{session.custom.alarm_filter.show_safety}, \r\nTrue,\r\nFalse)\r\n" + }, + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.custom.filters_active}, \"Status Filters are active\",\r\n\"Select Status Filters\")" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.custom.filters_active},\r\n\"#FF8C00\",\r\n\"#FFFFFF\")\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/filter_alt", + "style": { + "classes": "" + } + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Buttons/Button-Menu, filter-button", + "margin": 1 + }, + "text": "Filter", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "params": {}, + "view": "Main-Views/CT_Main" + }, + "enabled": false, + "scope": "C", + "type": "nav" + }, + { + "config": { + "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Tools\")" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Tools", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "custom.has_role": { + "binding": { + "config": { + "expression": "isAuthorized(false, \u0027Authenticated/Roles/eurme-ignition-developers\u0027, \r\n\t\u0027Authenticated/Roles/eurme-ignition-ae\u0027, \u0027Authenticated/Roles/narme-ignition-developers\u0027)" + }, + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.custom.has_role}\u003d False, \r\n\"You do not have the required role to access this page\",\r\n\"Access tools page\")\r\n" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "this.custom.has_role" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/handyman" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Tools", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/Command" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Control", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "custom.has_role": { + "binding": { + "config": { + "expression": "{session.custom.fc}" + }, + "transforms": [ + { + "code": "#\trme_role \u003d value +\"-rme-all\"\n\trme_role \u003d \"eurme-ignition-developers\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False", + "type": "script" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.custom.has_role}\u003d False, \r\n\"You do not have the required role to access this page\",\r\n\"Access controls page\")\r\n" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/gamepad" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Control", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.navigate(\"/Windows/Statistics\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Statistic", + "tooltip": { + "enabled": true, + "text": "Notifications" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if(isNull({session.custom.download_url}), False, True)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FCFFFC", + "path": "material/leaderboard" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Buttons/Button-Menu", + "color": "#FFFFFF", + "margin": 1 + }, + "text": "Statistic", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.navigate(\"/Windows/Status\")\n\tself.session.custom.show_dpm_view \u003d False\n\tself.session.custom.show_dpm_device_view \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status", + "tooltip": { + "enabled": true, + "text": "Notifications" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFD", + "path": "material/done" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Buttons/Button-Menu", + "color": "#FFFFFF", + "margin": 1 + }, + "text": "Status", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "custom": { + "show": false + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Help\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Help", + "tooltip": { + "enabled": true, + "text": "Navigate to the help wiki" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/help_outline" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Help", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.navigateBack()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Back", + "tooltip": { + "enabled": true, + "text": "Back" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFFFF", + "path": "material/keyboard_return" + }, + "position": "top", + "width": 32 + }, + "style": { + "margin": 1 + }, + "text": "Back", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\turl \u003d self.session.custom.download_url\n\tself.session.custom.download_url \u003d None\n\tsystem.perspective.navigate(url \u003d url , newTab \u003d True)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Downloads", + "tooltip": { + "enabled": true, + "text": "Notifications" + } + }, + "position": { + "basis": "70px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if(isNull({session.custom.download_url}), False, True)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "color": "#FFFAF1", + "path": "material/cloud_download" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Buttons/Button-Menu", + "color": "#FFFFFF", + "margin": 1 + }, + "text": "Download", + "textStyle": { + "classes": "Text-Styles/Docked-Buttons" + } + }, + "type": "ia.input.button" + } + ], + "custom": { + "show_home_selector": false + }, + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "session.props.theme" + }, + "transforms": [ + { + "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": {} + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/resource.json new file mode 100644 index 0000000..5741b3d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "102cd1373506ea31aebe2b2aafb3cf559e4d4d776cabb2f00249e3a955542e9d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/thumbnail.png new file mode 100644 index 0000000..109f5a6 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/view.json new file mode 100644 index 0000000..6c7eb4b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/view.json @@ -0,0 +1,155 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 192, + "width": 167 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0", + "tooltip": { + "enabled": true, + "text": "Uncontrolled Stop" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "classes": "State-Styles/Background-Fill/State1", + "textAlign": "center" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1", + "tooltip": { + "enabled": true, + "text": "Controlled Stop" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "classes": "State-Styles/Background-Fill/State2", + "textAlign": "center" + }, + "text": "Stop" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2", + "tooltip": { + "enabled": true, + "text": "Process Alarm" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "classes": "State-Styles/Background-Fill/State3", + "textAlign": "center" + }, + "text": "Process Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3", + "tooltip": { + "enabled": true, + "text": "Diagnostic" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "classes": "State-Styles/Background-Fill/State4", + "textAlign": "center" + }, + "text": "Diagnostic" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4", + "tooltip": { + "enabled": true, + "text": "Running" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "State-Styles/Background-Fill/State5", + "textAlign": "center" + }, + "text": "Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_5", + "tooltip": { + "enabled": true, + "text": "Unknown" + } + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "borderTopStyle": "solid", + "classes": "State-Styles/Background-Fill/State6", + "textAlign": "center" + }, + "text": "Unknown" + }, + "type": "ia.display.label" + } + ], + "custom": { + "display": true + }, + "meta": { + "name": "root", + "tooltip": { + "text": "key" + } + }, + "props": { + "direction": "column", + "style": { + "borderStyle": "solid" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/resource.json new file mode 100644 index 0000000..3f63ac5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e9da2bc54000c475e1805caac805581e1a20e93b64614f54b9813bffc12533f2" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/thumbnail.png new file mode 100644 index 0000000..3dbe047 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/view.json new file mode 100644 index 0000000..71794c5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/view.json @@ -0,0 +1,146 @@ +{ + "custom": {}, + "params": { + "page_id": "value", + "text": "enter text" + }, + "propConfig": { + "params.page_id": { + "paramDirection": "input", + "persistent": true + }, + "params.text": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 48, + "width": 136 + } + }, + "root": { + "children": [ + { + "custom": { + "PLC": "none" + }, + "meta": { + "name": "text_label" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "custom.text": { + "binding": { + "config": { + "path": "view.params.text" + }, + "type": "property" + } + }, + "props.elements[1].elements[0].text": { + "binding": { + "config": { + "path": "this.custom.text" + }, + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "name": "defs", + "type": "defs" + }, + { + "elements": [ + { + "fill": { + "paint": "#000000" + }, + "name": "tspan", + "stroke": { + "paint": "#020202", + "width": ".165" + }, + "text-anchor": "middle", + "type": "tspan", + "x": 5.7088058, + "y": 6.8615942 + } + ], + "fill": { + "paint": "#000000" + }, + "fontSize": "4.4316px", + "name": "text", + "stroke": { + "linecap": "round", + "linejoin": "round", + "paint": "#020202", + "width": ".165" + }, + "style": { + "paintOrder": "stroke fill markers" + }, + "transform": "scale(.99694 1.0031)", + "type": "text", + "x": "3.7088058", + "y": "6.8615942" + } + ], + "style": { + "backgroundColor": "#FFFFFF", + "borderBottomLeftRadius": "5px", + "borderBottomRightRadius": "5px", + "borderStyle": "solid", + "borderTopLeftRadius": "5px", + "borderTopRightRadius": "5px", + "borderWidth": "1px" + }, + "viewBox": "0 0 10.583 10.583" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.navigate(\"/\" + self.view.params.page_id)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.page_id" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/resource.json new file mode 100644 index 0000000..dfea267 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e1ea5806c1290ef063dea9f5bbd35074894757b97ff2f123544380a376fe3761" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/thumbnail.png new file mode 100644 index 0000000..c815a47 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/view.json new file mode 100644 index 0000000..ec8c9ef --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/view.json @@ -0,0 +1,97 @@ +{ + "custom": {}, + "params": { + "direction": { + "downward": false, + "left": false, + "right": false, + "upward": false + }, + "pageid": "" + }, + "propConfig": { + "params.direction": { + "paramDirection": "input", + "persistent": true + }, + "params.pageid": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 45, + "width": 45 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.navigate(\"/\" + self.view.params.pageid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "45px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.pageid" + }, + "type": "property" + } + }, + "props.align": { + "persistent": true + }, + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({view.params.direction.upward},\"material/keyboard_arrow_up\",\nif({view.params.direction.downward},\"material/keyboard_arrow_down\",\nif({view.params.direction.left},\"material/keyboard_arrow_left\",\nif({view.params.direction.right},\"material/keyboard_arrow_right\",0))))" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 45, + "icon": { + "color": "#000000" + }, + "position": "center", + "width": 45 + }, + "style": { + "backgroundColor": "#F6F6F6" + }, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/resource.json new file mode 100644 index 0000000..8333259 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "183e450d6c85ad48a755fa6b79f91cc1dedf46321bd85bc58156a0c7df9b84b8" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/thumbnail.png new file mode 100644 index 0000000..afad639 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/view.json new file mode 100644 index 0000000..562c9a3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/view.json @@ -0,0 +1,141 @@ +{ + "custom": {}, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 41, + "width": 83 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.params.tagProps[0] is not True:\n\t\tnavigation.additional_view.navigate_to_additional_view(self)\n\telse:\n\t\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[2],self.view.params.tagProps[2], self.view.params.tagProps[3])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "custom.page_id": { + "binding": { + "config": { + "path": "view.params.tagProps[2]" + }, + "type": "property" + } + }, + "custom.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "Configuration/DetailedViews.value" + }, + "transforms": [ + { + "code": "\t\n\tjson_decode \u003d system.util.jsonDecode(value)\n\tpage_id \u003d self.custom.page_id\n\tpage_status \u003d json_decode.get(\"AdditionalPages\",{}).get(page_id,5)\n\treturn page_status", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "{this.custom.status}" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 2, + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": 3, + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": 4, + "output": "State-Styles/Background-Fill/State4" + }, + { + "input": 5, + "output": "Buttons/Clear-Background" + }, + { + "input": 6, + "output": "State-Styles/Background-Fill/State6" + }, + { + "input": 0, + "output": "State-Styles/Background-Fill/State0" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/navigation" + } + }, + "style": {}, + "text": "" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/resource.json new file mode 100644 index 0000000..fba68d5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "d8c9346f8d800d4578ccb4ed33c763a8281ff2489928539e2f998a3f34e99b54" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/thumbnail.png new file mode 100644 index 0000000..ba1ce92 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/view.json new file mode 100644 index 0000000..83e5cc2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/view.json @@ -0,0 +1,184 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 240, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Header" + }, + "position": { + "height": 32, + "width": 400 + }, + "props": { + "style": { + "background-color": "#555555", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Command Authentication" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Password Label" + }, + "position": { + "height": 32, + "width": 152, + "x": 115.5, + "y": 68 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-White-12pt", + "fontSize": 18 + }, + "text": "Enter Username" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PasswordField" + }, + "position": { + "height": 32, + "width": 229, + "x": 85.5, + "y": 116 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "fontSize": 16 + } + }, + "type": "ia.input.password-field" + }, + { + "meta": { + "name": "Error Label", + "visible": false + }, + "position": { + "height": 32, + "width": 270, + "x": 56.5, + "y": 143 + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "color": "#FF8000", + "fontSize": 16, + "textAlign": "center" + }, + "text": "Login does not match" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tusername \u003d self.session.props.auth.user.userName\n\tlogin \u003d self.getSibling(\"PasswordField\").props.text\n\t\n\tif username \u003d\u003d login.lower():\n\t\tuser_valid \u003d True\n\telse:\n\t\tuser_valid \u003d False\n\t\n\trme_role \u003d self.session.custom.fc +\"-rme-c2c-all\"\n\tadmin_role \u003d \"eurme-ignition-admins\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles) or admin_role in roles:\n\t\thas_role \u003d True\n\telse:\n\t\thas_role \u003d False\n\t\n\tif user_valid and has_role:\n\t\tself.session.custom.command_auth.auth_time \u003d system.date.now()\n\t\tself.session.custom.command_auth.enabled \u003d True\n\t\tsystem.perspective.closePopup(\u0027\u0027)\n\telse:\n\t\tself.getSibling(\"Error Label\").meta.visible \u003d True" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Authenticate" + }, + "position": { + "height": 34, + "width": 120, + "x": 71, + "y": 191 + }, + "props": { + "image": { + "height": 20, + "width": 20 + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller" + }, + "text": "Authenticate" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\u0027\u0027)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Cancel" + }, + "position": { + "height": 34, + "width": 120, + "x": 209, + "y": 191 + }, + "props": { + "image": { + "height": 20, + "width": 20 + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller" + }, + "text": "Cancel" + }, + "type": "ia.input.button" + } + ], + "custom": { + "tags_data": { + "$": [ + "ds", + 192, + 1671029641714 + ], + "$columns": [ + { + "data": [], + "name": "Tags", + "type": "String" + } + ] + } + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/resource.json new file mode 100644 index 0000000..40a6b18 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "152f32947011044305aa1468a513261d3f82d77ae358f117d40e7fcd0749efce" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/thumbnail.png new file mode 100644 index 0000000..db776c2 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/view.json new file mode 100644 index 0000000..84fb638 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/view.json @@ -0,0 +1,939 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "color": "#C2C2C2", + "running_state": -1, + "type": "Enable", + "views_data": [] + }, + "params": { + "tagProps": [ + "System/MCM06/Chute/NC/S02_203CH", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}", + "type": "{view.custom.type}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{type}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.running_state": { + "binding": { + "config": { + "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" + }, + "transforms": [ + { + "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", + "type": "expression" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Button_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 5, + "output": "Chute_JR" + }, + { + "input": 4, + "output": "GS" + }, + { + "input": 3, + "output": "PR" + }, + { + "input": 2, + "output": "Start" + }, + { + "input": 1, + "output": "JR" + }, + { + "input": 6, + "output": "Enable" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.views_data": { + "binding": { + "config": { + "struct": { + "equipment_id": "{view.params.tagProps[0]}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-BTN\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "BUTTON LIGHT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PB_Light" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.color" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + }, + "textStyle": { + "color": "#C2C2C2" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/JR_PB\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\n\ttag_path3 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB\"\n\tsystem.tag.writeBlocking([tag_path3],[True])\n\ttag_path4 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_PB\"\n\tsystem.tag.writeBlocking([tag_path4],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "Start", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.image.icon.path": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": "PR", + "output": "material/not_started" + }, + { + "input": "Start", + "output": "material/not_started" + }, + { + "input": "JR", + "output": "material/sync_problem" + }, + { + "input": "GS", + "output": "material/not_started" + }, + { + "input": "Chute_JR", + "output": "material/sync_problem" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.color" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": "PR", + "output": "ENABLE" + }, + { + "input": "Start", + "output": "START" + }, + { + "input": "JR", + "output": "JAM RESET" + }, + { + "input": "GS", + "output": "GAYLORD START" + }, + { + "input": "Chute_JR", + "output": "CHUTE JAM RESET" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "Start", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Reset Jam" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "code": "\t# This script runs whenever view.custom.type changes\n\tif value \u003d\u003d \"PR\" or value \u003d\u003d \"Enable\":\n\t\treturn [\"Alarms\", \"Info\"]\n\telse:\n\t\treturn [\"Alarms\", \"Info\", \"Commands\"]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/resource.json new file mode 100644 index 0000000..79954ca --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "9f15da3c272745c343be4087301416aee94f67bb048518ea48588467e318331b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/thumbnail.png new file mode 100644 index 0000000..f523165 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/view.json new file mode 100644 index 0000000..59f61c4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/view.json @@ -0,0 +1,651 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "running_state": -1, + "state": 0, + "views_data": [] + }, + "params": { + "tagProps": [ + "/System/Station/Buttons/UL1_3_JR_PB2", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.running_state": { + "binding": { + "config": { + "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" + }, + "transforms": [ + { + "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", + "type": "expression" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 3, + "output": 3 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.views_data": { + "binding": { + "config": { + "struct": { + "equipment_id": "{view.params.tagProps[0]}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-DS\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "COMMUNICATION FAULTED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PB_Light" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "FAULTED" + }, + { + "input": 0, + "output": "NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "NOT FAULTED", + "output": "#47FF47" + }, + { + "input": "FAULTED", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "currentTabIndex": 1, + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/resource.json new file mode 100644 index 0000000..fb0f1ed --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-01T11:40:31Z" + }, + "lastModificationSignature": "a0997442f682baaf365bef1dc69b16bb3a540a400aaa50ff21764cbdd92f4977" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/view.json new file mode 100644 index 0000000..1174def --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/view.json @@ -0,0 +1,659 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "color": "#00FF00" + }, + "params": { + "tagProps": [ + "System/MCM01/Station/EPC/UL1_4_EPC1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-BTN\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "EPC LIGHT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PB_Light" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.custom.color" + }, + "transforms": [ + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": "#FF0000", + "output": "ON" + }, + { + "input": "#00FF00", + "output": "OFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.color" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/resource.json new file mode 100644 index 0000000..28c6318 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "cc8da519bd2e4fd6a9211ddb58b5a6b21cb75547a418a40cabe880fb124288dc" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/thumbnail.png new file mode 100644 index 0000000..c553286 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/view.json new file mode 100644 index 0000000..0bcd84f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/view.json @@ -0,0 +1,1999 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "running_state": -1, + "state": 0, + "type": 0, + "views_data": [] + }, + "params": { + "tagProps": [ + "System/MCM01/Conveyor/EXTENDO/UL1_1_EX1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.running_state": { + "binding": { + "config": { + "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" + }, + "transforms": [ + { + "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", + "type": "expression" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 3, + "output": 3 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.views_data": { + "binding": { + "config": { + "struct": { + "equipment_id": "{view.params.tagProps[0]}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-Extendo\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "BELT RUNNING" + }, + { + "input": 0, + "output": "AOPEN ACTIVE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "paddingLeft": 20 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Aopen Active" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "code": "\tprovider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n\tbaseTag \u003d self.view.params.tagProps[0]\n\tbasePath \u003d \"[\" + provider + \"]\" + baseTag\n\tchild \u003d \"\"\n\tunit \u003d \"\"\n\t\n\tif value \u003d\u003d 1:\n\t child \u003d \"Belt_Running\"\n\telse:\n\t child \u003d \"Aopen_Active\"\n\t\n\tfullPath \u003d basePath + \"/\" + child\n\ttagValue \u003d system.tag.readBlocking([fullPath])[0]\n\tresult \u003d tagValue.value\n\t\n\tif result is None or str(result) \u003d\u003d \"None\":\n\t return \"UNKNOWN\"\n\telse:\n\t if value \u003d\u003d 1:\n\t return \"Running\" if result else \"Not Running\"\n\t else:\n\t \treturn \"Active\" if result else \"Not Active\"\n\t ", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "enabled": false, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ACTIVE", + "output": "#47FF47" + }, + { + "input": "NOT ACTIVE", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Aopen Active" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "PLC READY TO RUN" + }, + { + "input": 0, + "output": "FULLY EXTENDED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "paddingLeft": 20 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Fully Extended" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "code": "\tprovider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n\tbaseTag \u003d self.view.params.tagProps[0]\n\tbasePath \u003d \"[\" + provider + \"]\" + baseTag\n\tchild \u003d \"\"\n\t\n\tif value \u003d\u003d 1:\n\t child \u003d \"PLC_Ready_To_Run\"\n\telse:\n\t child \u003d \"Fully_Extended\"\n\t\n\tfullPath \u003d basePath + \"/\" + child\n\ttagValue \u003d system.tag.readBlocking([fullPath])[0]\n\tresult \u003d tagValue.value\n\t\n\tif result is None or str(result) \u003d\u003d \"None\":\n\t return \"UNKNOWN\"\n\telse:\n\t if value \u003d\u003d 1:\n\t return \"Ready\" if result else \"Not Ready\"\n\t else:\n\t \treturn \"Extended\" if result else \"Not Extended\"\n\t ", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "enabled": false, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "EXTENDED", + "output": "#47FF47" + }, + { + "input": "NOT EXTENDED", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Fully Extended" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "OK TO RUN" + }, + { + "input": 0, + "output": "FULLY RETRACTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "paddingLeft": 20 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Fully Retracted" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "code": "\tprovider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n\tbaseTag \u003d self.view.params.tagProps[0]\n\tbasePath \u003d \"[\" + provider + \"]\" + baseTag\n\tchild \u003d \"\"\n\t\n\tif value \u003d\u003d 1:\n\t child \u003d \"OK_To_Run\"\n\telse:\n\t child \u003d \"Fully_Retracted\"\n\t\n\tfullPath \u003d basePath + \"/\" + child\n\ttagValue \u003d system.tag.readBlocking([fullPath])[0]\n\tresult \u003d tagValue.value\n\t\n\tif result is None or str(result) \u003d\u003d \"None\":\n\t return \"UNKNOWN\"\n\telse:\n\t if value \u003d\u003d 1:\n\t return \"OK\" if result else \"Not OK\"\n\t else:\n\t \treturn \"Retracted\" if result else \"Not Retracted\"\n\t ", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "enabled": false, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "RETRACTED", + "output": "#47FF47" + }, + { + "input": "NOT RETRACTED", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Fully Retracted" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "READY TO RECEIVE" + }, + { + "input": 0, + "output": "LODAING MODE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "paddingLeft": 20 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Loading Mode" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "code": "\tprovider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n\tbaseTag \u003d self.view.params.tagProps[0]\n\tbasePath \u003d \"[\" + provider + \"]\" + baseTag\n\tchild \u003d \"\"\n\t\n\tif value \u003d\u003d 1:\n\t child \u003d \"Ready_To_Receive\"\n\telse:\n\t child \u003d \"Loading_Mode\"\n\t\n\tfullPath \u003d basePath + \"/\" + child\n\ttagValue \u003d system.tag.readBlocking([fullPath])[0]\n\tresult \u003d tagValue.value\n\t\n\tif result is None or str(result) \u003d\u003d \"None\":\n\t return \"UNKNOWN\"\n\telse:\n\t if value \u003d\u003d 1:\n\t return \"Ready\" if result else \"Not Ready\"\n\t else:\n\t \treturn \"ON\" if result else \"OFF\"\n\t ", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "enabled": false, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#47FF47" + }, + { + "input": "OFF", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Loading Mode" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UNLOADING MODE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Unloading Mode" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Unloading_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ON" + }, + { + "input": 0, + "output": "OFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#47FF47" + }, + { + "input": "OFF", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Unloading Mode" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": false + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "POWER SAVING MODE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Power Saving Mode" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Unloading_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ON" + }, + { + "input": 0, + "output": "OFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#47FF47" + }, + { + "input": "OFF", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Power Saving Mode" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/EX_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},false)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": false + }, + { + "input": 0, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + tag_name + \"/PEC_Override_PB\"\n\tcurrent_value \u003d system.tag.readBlocking([tag_path])[0].value\n\tnew_value \u003d not current_value\n\tsystem.tag.writeBlocking([tag_path], [new_value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#9661A3\",\r\n if(\r\n {this.props.text} \u003d \"PEC OVERRIDE: ON\",\r\n \"#E888FF\",\r\n if(\r\n {this.props.text} \u003d \"PEC OVERRIDE: OFF\",\r\n \"#CC00FF\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/PEC_Override_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "PEC OVERRIDE: OFF", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "PEC OVERRIDE: ON" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "PEC Override" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + tag_name + \"/Extendo_Faults_Reset_PB\"\n\tcurrent_value \u003d system.tag.readBlocking([tag_path])[0].value\n\tnew_value \u003d not current_value\n\tsystem.tag.writeBlocking([tag_path], [new_value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"EXTENDO FAULTS RESET PRESSED\",\r\n \"#FF9191\",\r\n if(\r\n {this.props.text} \u003d \"EXTENDO FAULTS RESET\",\r\n \"#FF0000\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Extendo_Faults_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "EXTENDO FAULTS RESET", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "EXTENDO FAULTS RESET PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Extendo Fault Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "code": "\t# This script runs whenever view.custom.type changes\n\tif value \u003d\u003d 0 or value \u003d\u003d 3:\n\t\treturn [\"Alarms\", \"Info\", \"Commands\"]\n\telse:\n\t\treturn [\"Alarms\", \"Info\"]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "currentTabIndex": 1, + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/resource.json new file mode 100644 index 0000000..3aa1e04 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "179928c2c4dc5fd0fe878c35c1fdd6700baad9a4532928b9425710d9fc80478e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/thumbnail.png new file mode 100644 index 0000000..847d441 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/view.json new file mode 100644 index 0000000..815c0f3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/view.json @@ -0,0 +1,796 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "running_state": -1, + "state": 0, + "views_data": [] + }, + "params": { + "tagProps": [ + "System/MCM04/Station/Chute_JR/FL1038_2_JR1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.running_state": { + "binding": { + "config": { + "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" + }, + "transforms": [ + { + "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", + "type": "expression" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 3, + "output": 3 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.views_data": { + "binding": { + "config": { + "struct": { + "equipment_id": "{view.params.tagProps[0]}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-JR\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "LIGHT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PB_Light" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Pressed" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ON" + }, + { + "input": 0, + "output": "OFF" + }, + { + "input": true, + "output": "ON" + }, + { + "input": false, + "output": "OFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#47FF47" + }, + { + "input": "OFF", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/JR_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#B17B50\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET PRESSED\",\r\n \"#FE9240\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET\",\r\n \"#EB6700\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "JAM RESET", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "JAM RESET PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Reset Jam" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info", + "Commands" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json new file mode 100644 index 0000000..e4ad474 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "03d30f4543774aae54994d2921804818c89cb26e83f13a2bc78fd153c909cee7" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png new file mode 100644 index 0000000..d7e7f28 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json new file mode 100644 index 0000000..fca3eef --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json @@ -0,0 +1,3364 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05" + ], + "state": 0 + }, + "params": { + "tagProps": [ + "System/MCM01/MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 3, + "output": 3 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-MCM\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "MOTOR FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Motor Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Motor_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "MOTOR FAULTED" + }, + { + "input": 0, + "output": "MOTOR NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "MOTOR FAULTED", + "output": "#FF0000" + }, + { + "input": "MOTOR NOT FAULTED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Motor Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "JAM FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Jam Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Jam_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "JAM FAULTED" + }, + { + "input": 0, + "output": "JAM NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "JAM FAULTED", + "output": "#FFC000" + }, + { + "input": "JAM NOT FAULTED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Jam Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "FIRE RELAY DE ENERGIZED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Fire Relay De Energized" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Fire_Relay_De_Energized" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "DE ENERGIZED" + }, + { + "input": 0, + "output": "NOT DE ENERGIZED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "DE ENERGIZED", + "output": "#FF0000" + }, + { + "input": "NOT DE ENERGIZED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Fire Relay De Energized" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "ESTOPPED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Estopped" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/EStopped" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ESTOPPED" + }, + { + "input": 0, + "output": "NOT ESTOPPED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ESTOPPED", + "output": "#FF0000" + }, + { + "input": "NOT ESTOPPED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Estopped" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "ESTOPPED LOCALLY" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Estopped Locally" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/EStopped_Locally" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ESTOPPED" + }, + { + "input": 0, + "output": "NOT ESTOPPED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ESTOPPED", + "output": "#FF0000" + }, + { + "input": "NOT ESTOPPED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Estopped Locally" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "STOPPED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Stopped" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Stopped" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "STOPPED" + }, + { + "input": 0, + "output": "NOT STOPPED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "STOPPED", + "output": "#FF0000" + }, + { + "input": "NOT STOPPED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Stopped" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAT SWITCH FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NAT Switch Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/NAT_Switch_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "SWITCH FAULTED" + }, + { + "input": 0, + "output": "SWITCH NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "SWITCH FAULTED", + "output": "#FF0000" + }, + { + "input": "SWITCH NOT FAULTED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "NAT Switch Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "ON UPS BATTERY" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "On UPS Battery" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/On_UPS_Battery" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ON UPS BATTERY" + }, + { + "input": 0, + "output": "NOT ON UPS BATTERY" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "NOT ON UPS BATTERY", + "output": "#FF0000" + }, + { + "input": "NOT ON UPS BATTERY", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "On UPS Battery" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "BATTERY FAULTED" + }, + { + "input": 0, + "output": "BATTERY NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "BATTERY FAULTED", + "output": "#FF0000" + }, + { + "input": "BATTERY NOT FAULTED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "UPS Battery Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY LOW" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery Low" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_Low" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "BATTERY LOW" + }, + { + "input": 0, + "output": "BATTERY NOT LOW" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "BATTERY LOW", + "output": "#FF0000" + }, + { + "input": "BATTERY NOT LOW", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "UPS Battery Low" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery On" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_On" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "ON" + }, + { + "input": 0, + "output": "OFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#FF0000" + }, + { + "input": "OFF", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "UPS Battery On" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "UPS FAULTED" + }, + { + "input": 0, + "output": "UPS NOT FAULTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "UPS FAULTED", + "output": "#FF0000" + }, + { + "input": "UPS NOT FAULTED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "UPS Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start_PB_Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"#006400\")", + "type": "expression" + }, + { + "fallback": "#006400", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/not_started" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "START" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Start" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"STOP PRESSED\",\r\n \"#FF0000\",\r\n if(\r\n {this.props.text} \u003d \"STOP\",\r\n \"#CA0D0D\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Stop_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "STOP", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "STOPPED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/stop_circle" + } + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Stop" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Motor_Fault_Reset_PB_Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"#FFF700\")", + "type": "expression" + }, + { + "fallback": "#FFF700", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/refresh" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "MOTOR FAULT RESET", + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Motor Fault Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Power_Branch_Fault_Reset_PB_Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"#FFF700\")", + "type": "expression" + }, + { + "fallback": "#FFF700", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/power" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "POWER BRANCH FAULT", + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Power Branch Fault Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Low_Air_Pressure_Reset_PB_Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"#00008B\")", + "type": "expression" + }, + { + "fallback": "#00008B", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/waves" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "LOW AIR PRESSURE RESET" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Low Air Pressure Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Jam_Restart_PB_Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"#C2C2C2\")", + "type": "expression" + }, + { + "fallback": "#C2C2C2", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "JAM RESTART", + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Jam Restart" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Setup_Motor_Speeds" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {value} \u003d 1,\r\n \"#AAAAAA\",\r\n \"#FFFFFF\"\r\n )\r\n)\r\n", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/speed" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "SETUP MOTOR SPEEDS", + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Setup Motor Speeds" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info", + "Commands" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/resource.json new file mode 100644 index 0000000..a32c912 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "89af6e4eae683b14afa90569ef873d44012d8b5ec233126a3fd552d94080f438" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/thumbnail.png new file mode 100644 index 0000000..04567ed Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/view.json new file mode 100644 index 0000000..ac8bd5f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/view.json @@ -0,0 +1,968 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "start_color": "#00FF00", + "stop_color": "#B43434" + }, + "params": { + "tagProps": [ + "System/MCM01/Station/SS_PB/UL3_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.start_color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.stop_color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Stop/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-SS-BTN\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "LIGHT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PB_Light" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start/Color" + }, + "transforms": [ + { + "expression": "if({value}\u003d4, \"ON\", \"OFF\")", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "ON", + "output": "#47FF47" + }, + { + "input": "OFF", + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.start_color" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/not_started" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "START" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Start" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.stop_color" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/stop_circle" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "text": "STOP" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Stop" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "if(indexOf({view.params.tagProps[0]}, \"SS_PB\") \u003e\u003d 0, true, false)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands" + }, + "position": { + "tabIndex": 2 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "currentTabIndex": 2, + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info", + "Commands" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/resource.json new file mode 100644 index 0000000..e371731 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "8f79314739539c3dc289f3af66ee9139f32ed772eddd69ab53bea9c83ec3de91" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/thumbnail.png new file mode 100644 index 0000000..0e3b809 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/view.json new file mode 100644 index 0000000..981a9b0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/view.json @@ -0,0 +1,1914 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "button_type": "UNKNOWN", + "type": 0 + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM06/Chute/NC/S02_203CH", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.button_type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Button_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 5, + "output": "Chute_JR" + }, + { + "input": 4, + "output": "GS" + }, + { + "input": 3, + "output": "PR" + }, + { + "input": 2, + "output": "Start" + }, + { + "input": 1, + "output": "JR" + }, + { + "input": 6, + "output": "Enable" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-SNP\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "enabled": false, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\treturn value[1:]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "filters": { + "active": { + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "refreshRate": 500, + "toolbar": { + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "FULL" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Full" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "FULL", + "output": "#D5D5D5" + }, + { + "input": "NOT FULL", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Full" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "FULL" + }, + { + "input": 0, + "output": "NOT FULL" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "FULL", + "output": "#0008FF" + }, + { + "input": "NOT FULL", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Full" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "JAM" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Jam" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "JAMMED", + "output": "#D5D5D5" + }, + { + "input": "NOT JAMMED", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Jam" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "JAMMED" + }, + { + "input": 0, + "output": "NOT JAMMED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "JAMMED", + "output": "#FF8C00" + }, + { + "input": "NOT JAMMED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Jam" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + }, + { + "input": 3, + "output": true + }, + { + "input": 4, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "DISABLED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Disabled" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#D5D5D5" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Disabled" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus}, \"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + }, + { + "input": 0, + "output": "FALSE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Disabled" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + }, + { + "input": 4, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "HALF FULL" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Half Full" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "HALF FULL", + "output": "#D5D5D5" + }, + { + "input": "NOT HALF FULL", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Half_Full" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "HALF FULL" + }, + { + "input": 0, + "output": "NOT HALF FULL" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "HALF FULL", + "output": "#FFF000" + }, + { + "input": "NOT HALF FULL", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Half Full" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + }, + { + "input": 4, + "output": true + }, + { + "input": 3, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NO CONTAINER" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "No Container" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "NO CONTAINER", + "output": "#D5D5D5" + }, + { + "input": "CONTAINER PRESENT", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/No_Container" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "NO CONTAINER" + }, + { + "input": 0, + "output": "CONTAINER PRESENT" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "NO CONTAINER", + "output": "#FF4487" + }, + { + "input": "CONTAINER PRESENT", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "No Container" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "READY TO BE ENABLED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Ready To Be Enabled" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": "READY", + "output": "#D5D5D5" + }, + { + "input": "ENABLED", + "output": "#D5D5D5" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "ENABLED", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "READY" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "READY", + "output": "#92FF00" + }, + { + "input": "ENABLED", + "output": "#47FF47" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Ready To Be Enabled" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}", + "type": "{view.custom.button_type}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{type}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "ENABLE" + }, + { + "input": 1, + "output": "GAYLORD START" + }, + { + "input": 4, + "output": "ENABLE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#0B0B0B" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Enable" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + }, + { + "input": 4, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "path": "view.custom.type" + }, + "transforms": [ + { + "code": "\t# This script runs whenever view.custom.type changes\n\tif value \u003d\u003d 0 or value \u003d\u003d 3:\n\t\treturn [\"Alarms\", \"Info\"]\n\telse:\n\t\treturn [\"Alarms\", \"Info\", \"Commands\"]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "currentTabIndex": 1, + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + } + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/resource.json new file mode 100644 index 0000000..cdfc3dd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "ae73a4683641dac852d3e7ca51e242169d7a467ede729844d48e60ee764d17db" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/thumbnail.png new file mode 100644 index 0000000..dfa60b9 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json new file mode 100644 index 0000000..c5277c4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json @@ -0,0 +1,2676 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "color": "#C2C2C2", + "state": "Closed" + }, + "params": { + "tagProps": [ + "System/MCM01/Conveyor/VFD/UL1_3_VFD1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 403 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East-VFD\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "Header" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmStatusTable" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "propConfig": { + "props.filters.active.conditions.displayPath": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\tparts \u003d value.split(\"/\")\n\tname \u003d parts[-1]\n\t\n\t# Split on \"_\" and remove the last part\n\tname_parts \u003d name.split(\"_\")\n\tnew_name \u003d \"_\".join(name_parts[:-1])\n\t\n\treturn new_name + \"_PE*,\" + new_name + \"_VFD*\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "columns": { + "active": { + "displayPath": { + "enabled": false + }, + "priority": { + "enabled": false + }, + "source": { + "enabled": false + }, + "state": { + "enabled": false + } + } + }, + "enableAcknowledge": false, + "enableDetails": false, + "enableShelve": false, + "enableUnshelve": false, + "filters": { + "active": { + "conditions": {}, + "priorities": { + "critical": false, + "high": false, + "low": false, + "medium": false + }, + "states": { + "clearUnacked": false + } + } + }, + "pager": { + "enabled": false + }, + "refreshRate": 500, + "rowStyles": { + "activeAcked": { + "priorities": { + "diagnostic": { + "backgroundColor": "#579af1" + }, + "high": { + "backgroundColor": "#fb615b" + }, + "low": { + "backgroundColor": "#f8fa6e" + }, + "medium": { + "backgroundColor": "#ee9b5c" + } + } + }, + "activeUnacked": { + "base": { + "color": "black" + }, + "priorities": { + "critical": { + "backgroundColor": "#7C2320" + }, + "diagnostic": { + "backgroundColor": "#579af1" + }, + "high": { + "backgroundColor": "#fb615b" + }, + "low": { + "backgroundColor": "#f8fa6e" + }, + "medium": { + "backgroundColor": "#ee9b5c" + } + } + } + }, + "selection": { + "active": { + "mode": "none" + }, + "shelved": { + "mode": "none" + } + }, + "toolbar": { + "enableActiveTab": false, + "enableConfiguration": false, + "enableFilter": false, + "enableFilterResults": false, + "enablePreFilters": false, + "enableShelvedTab": false, + "enabled": false + } + }, + "type": "ia.display.alarmstatustable" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column", + "justify": "space-around" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "VFD" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "STATE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "State" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "if({view.custom.state}\u003d\"Closed\", \"UNKNOWN\", {view.custom.state})" + }, + "type": "expr" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "expression": "if({view.custom.state}\u003d\"Closed\", \"#000000\", {view.custom.color})" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px", + "shrink": 2 + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "State" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "FPM" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FPM" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/FPM" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" FPM\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FPM" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN (FREQ/VELOCITY)\u0027)", + "type": "expression" + }, + { + "fallback": "UNKNOWN (FREQ/VELOCITY)", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "VELOCITY" + }, + { + "input": 0, + "output": "FREQUENCY" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "paddingLeft": 20 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Frequency_Velocity" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type" + }, + "transforms": [ + { + "code": " provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n unit \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Velocity\"\n unit \u003d \" Rev/s\"\n else:\n child \u003d \"Frequency\"\n unit \u003d \" Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n if result is None or str(result) \u003d\u003d \"None\":\n return \"UNKNOWN\"\n else:\n return str(result) + unit", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Frequency_Velocity" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "AMPERAGE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Amperage" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" A\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Amperage" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "VOLTAGE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Voltage" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Voltage" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" V\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Voltage" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "COMMUNICATION FAULT CODE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Communication_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Communication_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Communication_Fault_Code" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "VFD FAULT CODE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "VFD_Fault_Code" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "LAST VFD FAULT CODE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Last_VFD_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#D5D5D5", + "inputType": "scalar", + "mappings": [ + { + "input": "UNKNOWN", + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Last_VFD_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Last_VFD_Fault_Code" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "margin-left": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Commands", + "textStyle": { + "color": "#060606" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Speed_At_60Hz_30rev" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN (60hz/30rev)\u0027)", + "type": "expression" + }, + { + "fallback": "Unknown (60hz/30rev)", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Speed At 30 rev/s" + }, + { + "input": 0, + "output": "Speed At 60Hz" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "padding": 20 + }, + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\n\tvfdType \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + self.view.params.tagProps[0] + \"/VFD_Type\"\n\tprop \u003d \"\"\n\t\n\tvfdTypeVal \u003d system.tag.readBlocking([vfdType])[0].value\n\t\n\tif vfdTypeVal \u003d\u003d 1:\n\t\tprop \u003d \"Speed_At_30rev\"\n\telse:\n\t\tprop \u003d \"Speed_At_60Hz\"\n\t\t\n\tpropHzRev \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + self.view.params.tagProps[0] + \"/\" + prop\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propHzRev], [value])\n\t\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/VFD_Type" + }, + "transforms": [ + { + "code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Speed_At_30rev\"\n else:\n child \u003d \"Speed_At_60Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n \n return result", + "type": "script" + }, + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "200px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Speed_At_60Hz_30rev" + }, + "position": { + "basis": "46px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Cycle_Time_Factor" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "style": { + "padding": 20 + }, + "text": "Cycle Time Factor", + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+ self.view.params.tagProps[0] + \"/Cycle_Time_Factor\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Cycle_Time_Factor" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "200px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Cycle_Time_Factor" + }, + "position": { + "basis": "46px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands" + }, + "position": { + "basis": "200px" + }, + "props": { + "alignContent": "flex-start", + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Maintenance_Mode\"\n\tinMaintenanceMode \u003d system.tag.readBlocking([propMaintMode])[0].value\n\t\n\n\tsystem.tag.writeBlocking([propMaintMode], [not inMaintenanceMode])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Maintenance" + }, + "position": { + "basis": "34px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027#000000\u0027)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#0000FF" + }, + { + "input": true, + "output": "#7E5A5A" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)", + "type": "expression" + }, + { + "fallback": "Maintenance Mode: Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Activate Maintenance Mode" + }, + { + "input": true, + "output": "Disable Maintenance Mode" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginBottom": 10 + } + }, + "type": "ia.input.button" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "FPM", + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+ self.view.params.tagProps[0] + \"/Maintenance/Speed_FPM\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "if(\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || \r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0,\r\n {value},\r\n false\r\n)\r\n", + "type": "expression" + }, + { + "expression": "if(isNull({value}), false, {value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Speed_FPM" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "FPM" + }, + "position": { + "basis": "65px", + "shrink": 0 + }, + "props": { + "justify": "center", + "style": { + "marginBottom": 10 + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Start_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 ||\r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#00D900", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00D900" + }, + { + "input": 1, + "output": "#00FF00" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "START", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "STARTED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginBottom": 10 + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Stop_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 ||\r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#D90000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#D90000" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "STOP", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "STOPPED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginBottom": 10 + } + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onMouseDown": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tspeedFPM \u003d self.parent.getChild(\"FPM\").getChild(\"NumericEntryField\").props.value\n\tif (speedFPM !\u003d 0):\t\n\t\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Jog_PB_Pressed\"\n\t\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + }, + "onMouseUp": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tspeedFPM \u003d self.parent.getChild(\"FPM\").getChild(\"NumericEntryField\").props.value\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Jog_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[False])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Jog" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 ||\r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Jog_PB_Pressed" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#00ACAC", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#47FFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Jog_PB_Pressed" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "JOG", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "JOG PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginBottom": 10 + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Direction_PB_Pressed\"\n\tdirection \u003d system.tag.readBlocking([tag_path])[0].value\n\tsystem.tag.writeBlocking([tag_path], [not direction])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Direction" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 ||\r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Direction\u0027)", + "type": "expression" + }, + { + "fallback": "Direction Backward", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Direction Forward" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#095ECD", + "marginBottom": 10 + } + }, + "type": "ia.input.button" + } + ], + "custom": { + "errorMessage": "" + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "500px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Maintenance" + }, + "position": { + "basis": "400px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "marginTop": -40 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "alignItems": "center", + "direction": "column", + "enabled": false, + "justify": "space-between", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info", + "Commands" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "Main" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "props": { + "style": { + "border-top": "1px solid white", + "gap": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/resource.json new file mode 100644 index 0000000..2e6293f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6963938ff8667b89d810e7806ddd02d8f14309896fe9a95a018da2ee80b2b35b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/thumbnail.png new file mode 100644 index 0000000..a54fd85 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/view.json new file mode 100644 index 0000000..e4d037f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/view.json @@ -0,0 +1,1099 @@ +{ + "custom": { + "PLC_list": null, + "running_state": -1, + "state": 5, + "views_data": [] + }, + "params": { + "tagProps": [ + "PLC01/PS1-9/101SN01_ES", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.PLC_list": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.running_state": { + "binding": { + "config": { + "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" + }, + "transforms": [ + { + "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", + "type": "expression" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.views_data": { + "binding": { + "config": { + "struct": { + "equipment_id": "{view.params.tagProps[0]}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#FFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeDock(\u0027Docked-East\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true, + "style": { + "cursor": "pointer" + }, + "text": "Close faceplate" + } + }, + "props": { + "path": "material/close", + "style": { + "cursor": "pointer", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "session.custom.command_auth.enabled" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "\u0027Control Enabled Timeout: \\n\u0027 + ({session.custom.command_auth.timeout_sp} - {session.custom.command_auth.auth_timeout}) + \u0027 seconds\u0027" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "#000000", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5, + "whiteSpace": "pre" + }, + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.session.custom.command_auth.enabled:\n\t\t\tself.session.custom.command_auth.enabled \u003d False\n\telse:\n\t\t#self.session.custom.command_auth.enabled \u003d True\n\t\tsystem.perspective.openPopup(\u0027command-auth\u0027, \u0027PopUp-Views/Command-Authenticate\u0027, showCloseIcon \u003d False, draggable \u003d False, modal \u003d True, overlayDismiss \u003d True)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_0", + "tooltip": { + "enabled": true, + "location": "bottom", + "style": { + "whiteSpace": "pre" + } + } + }, + "position": { + "basis": "170px", + "shrink": 0 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "//if({this.props.enabled}, \u0027Re-Authenticate to Enable Command Controls\u0027, \u0027Insufficient Privileges - User Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)\r\nif({session.custom.command_auth.enabled},\u0027Click to Disable Controls.\u0027, \u0027Re-Authenticate to Enable Command Controls \\nUser Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)" + }, + "type": "expr" + } + }, + "props.image.icon.path": { + "binding": { + "config": { + "expression": "if({session.custom.command_auth.enabled},\u0027material/lock_open\u0027,\u0027material/lock\u0027)" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.command_auth.enabled},\u0027Disable Controls\u0027,\u0027Enable Controls\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "icon": {} + }, + "primary": false, + "style": { + "marginBottom": 5, + "marginRight": 25, + "marginTop": 5 + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "50px" + }, + "props": { + "justify": "flex-end" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "400px", + "shrink": 0 + }, + "propConfig": { + "props.params.value.tagProps[0]": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "value": { + "tagProps": [ + null, + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "path": "Symbol-Views/Controller-Views/CommandControlActions" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "50px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "code": "\n\tplcList \u003d self.view.custom.PLC_list\n\n\tshowCommand \u003d False\n\n\tfor i in plcList:\n\t\tif value \u003d\u003d i:\n\t\t\tshowCommand \u003d True\n\n\treturn showCommand", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Clear-Background" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Active Alarms" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmTable" + }, + "position": { + "basis": "733px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if({this.props.params.length_of_table_data} \u003e 0, True, False)" + }, + "type": "expr" + } + }, + "props.params.tagProps[0]": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "alarm_states": [ + "Shelved", + "Active", + "Not Active" + ], + "length_of_table_data": 0, + "show_severity_column": true, + "show_state_column": true, + "table_type": "Docked-East", + "tagProps": [ + null + ] + }, + "path": "Alarm-Views/AlarmTable" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "Active_tab" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "PRIORITY" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Priority" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d False, {view.custom.state}, {view.custom.state} + 300) " + }, + "transforms": [ + { + "fallback": "State-Styles/Background-Fill/State0", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 2, + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": 3, + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": 4, + "output": "State-Styles/Background-Fill/State4" + }, + { + "input": 5, + "output": "State-Styles/Background-Fill/State5" + }, + { + "input": 6, + "output": "State-Styles/Background-Fill/State6" + }, + { + "input": 0, + "output": "State-Styles/Background-Fill/State0" + }, + { + "input": 301, + "output": "State-Styles/Alt-Background-Fill/State1" + }, + { + "input": 302, + "output": "State-Styles/Alt-Background-Fill/State2" + }, + { + "input": 303, + "output": "State-Styles/Alt-Background-Fill/State3" + }, + { + "input": 304, + "output": "State-Styles/Alt-Background-Fill/State4" + }, + { + "input": 305, + "output": "State-Styles/Alt-Background-Fill/State5" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.tag_path_to_lookup": { + "binding": { + "config": { + "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "{view.custom.state}" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Stopped" + }, + { + "input": 1, + "output": "High Priority" + }, + { + "input": 2, + "output": "Medium Priority" + }, + { + "input": 3, + "output": "Low Priority" + }, + { + "input": 4, + "output": "Diagnostic" + }, + { + "input": 5, + "output": "Healthy" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "paddingLeft": 10, + "textAlign": "left" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Priority" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "RUNNING STATUS" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Priority" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired},\r\n{view.custom.running_state} + 300, {view.custom.running_state})" + }, + "transforms": [ + { + "fallback": "State-Styles/Background-Fill/StateUnknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 2, + "output": "State-Styles/Background-Fill/State0" + }, + { + "input": 3, + "output": "State-Styles/Background-Fill/State5" + }, + { + "input": 301, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 302, + "output": "State-Styles/Background-Fill/State0" + }, + { + "input": 303, + "output": "State-Styles/Alt-Background-Fill/State5" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.tag_path_to_lookup": { + "binding": { + "config": { + "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "{view.custom.running_state}" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Faulted" + }, + { + "input": 2, + "output": "Stopped" + }, + { + "input": 3, + "output": "Running" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "paddingLeft": 10, + "textAlign": "left" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Running Status" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.running_state} \u003e -1" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "len({../Views_list.props.data}) \u003d 0" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "No Configured Custom Views" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onRowDoubleClick": [ + { + "config": { + "script": "\trow \u003d event.value\n\tcustom_view \u003d row.get(\"path\",\"none\")\n\tif custom_view !\u003d \"None\":\n\t\tequipment_id \u003d custom_view.split(\"/\")[1]\n\t\turl_to_navigate \u003d \"/CustomView/%s/\" % (equipment_id,)\n\t\tsystem.perspective.navigate(page \u003d url_to_navigate)\n\t\tsystem.perspective.sendMessage(\"plc-to-display\", payload \u003d {\"device\":\"none\",\"show_controls\":False,\"area\":\"none\"}, scope \u003d \"page\")\n\t\tsystem.perspective.closePopup(id\u003d \"StatusPopUP\")\n\t\tself.parent.parent.parent.getChild(\"tabs\").props.currentTabIndex \u003d 0\n\t\t\n\t" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "draggable": true, + "id": "W1H0Nole", + "modal": false, + "overlayDismiss": false, + "resizable": true, + "showCloseIcon": true, + "title": "InfoPopUp", + "type": "close", + "viewPath": "PopUp-Views/Controller-Equipment/Information", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + ] + } + }, + "meta": { + "name": "Views_list" + }, + "position": { + "basis": "915px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "len({this.props.data}) \u003e 0" + }, + "type": "expr" + } + }, + "props.data": { + "binding": { + "config": { + "path": "view.custom.views_data" + }, + "type": "property" + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Views_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Labels/Label_1", + "marginTop": 20 + }, + "text": "For Future Development" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "OEE_tab" + }, + "position": { + "tabIndex": 3 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "menuType": "modern", + "tabSize": { + "width": 1000 + }, + "tabStyle": { + "active": { + "classes": "", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + }, + "inactive": { + "classes": "", + "color": "#B8B8B8", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "bold", + "paddingLeft": 10 + } + }, + "tabs": [ + "Alarms", + "Info", + "Views", + "KPI\u0027s" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "670px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Buttons/Button-Menu" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/resource.json new file mode 100644 index 0000000..e0983d4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "957cb0f7ac2ca2733d0906ea6eaa1ceb9d56b0cb76aead048d5154e4894962e6" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/thumbnail.png new file mode 100644 index 0000000..0117979 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/view.json new file mode 100644 index 0000000..d2127d3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/view.json @@ -0,0 +1,4965 @@ +{ + "custom": {}, + "params": { + "tagProps": [ + "", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 447, + "width": 917 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "205px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "STATUS" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Priority" + }, + "position": { + "basis": "205px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "{/root.custom.state}" + }, + "transforms": [ + { + "fallback": "State-Styles/State0", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 2, + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": 3, + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": 4, + "output": "State-Styles/Background-Fill/State4" + }, + { + "input": 5, + "output": "State-Styles/Background-Fill/State5" + }, + { + "input": 6, + "output": "State-Styles/Background-Fill/State6" + }, + { + "input": 0, + "output": "State-Styles/State0" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "{/root.custom.state}" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Aborted" + }, + { + "input": 2, + "output": "Stopped" + }, + { + "input": 3, + "output": "Process alarm" + }, + { + "input": 4, + "output": "Warning" + }, + { + "input": 5, + "output": "Running" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "textAlign": "left" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Priority" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "82px" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Priority_0" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Info_tab" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "custom": { + "delay": 2000 + }, + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tnavigation.alarm_navigation.navigate_to_alarm(self, event)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "AlarmTable" + }, + "position": { + "basis": "623px", + "grow": 1 + }, + "propConfig": { + "custom.run_update": { + "binding": { + "config": { + "path": "view.params.tagProps[9]" + }, + "type": "property" + } + }, + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\timport time\n\tfrom datetime import datetime\n\tstartTime \u003d datetime.now()\n\t\n\tdef convert(duration):\n\t\tsecs \u003d duration/1000\n\t\treturn time.strftime(\"%H:%M:%S\", time.gmtime(secs))\n\t\n\tdef empty_table():\n\t\treturn [[]]\n\n\talarms_data \u003d []\n\talarms_critical \u003d []\n\talarms_high \u003d []\n\talarms_medium \u003d []\n\talarms_low \u003d []\n\talarms_diagnostic \u003d []\n\talarm_temp_dict \u003d {}\n\tstyle_props_critical \u003d {\"classes\":\"Alarms-Styles/Critical\"}\n\tstyle_props_high \u003d {\"classes\":\"Alarms-Styles/High\"}\n\tstyle_props_medium \u003d {\"classes\":\"Alarms-Styles/Medium\"}\n\tstyle_props_low \u003d {\"classes\":\"Alarms-Styles/Low\"}\n\tstyle_props_diagnostic \u003d {\"classes\":\"Alarms-Styles/Diagnostic\"}\n\n\tif self.custom.run_update:\n\t\tif system.tag.exists(\"System/ActiveAlarms\"):\n\t\t\t\t\n\t\t\talarm_data \u003d system.tag.readBlocking([\"System/ActiveAlarms\"])\n\t\t\talarm_data \u003d alarm_data[0].value\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(alarm_data)\n\t\t\tdevice_name \u003d self.view.params.tagProps[0]\n\t\n\t\t\tif len(decode_alarm_data) \u003e 0:\n\t\n\t\t\t\tfor i in decode_alarm_data:\n\t\t\t\t\tif str(decode_alarm_data[i][\"DisplayPath\"]).startswith(device_name):\n\t\t\t\t\t\tif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 4:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_critical\n\t\t\t\t\t\t\tseverity \u003d \"4. Critical\"\n\t\t\t\t\t\t\tkey \u003d \"Critical\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 3:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_high\n\t\t\t\t\t\t\tseverity \u003d \"3. High\"\n\t\t\t\t\t\t\tkey \u003d \"High\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 2:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_medium\n\t\t\t\t\t\t\tseverity \u003d \"2. Medium\"\n\t\t\t\t\t\t\tkey \u003d \"Medium\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 1:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_low\n\t\t\t\t\t\t\tseverity \u003d \"1. Low\"\n\t\t\t\t\t\t\tkey \u003d \"Low\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 0:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_diagnostic\n\t\t\t\t\t\t\tseverity \u003d \"0. Warning\"\n\t\t\t\t\t\t\tkey \u003d \"Diagnostic\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tduration \u003d decode_alarm_data[i].get(\"Duration\")\n\t\t\t\t\t\tconverted_time \u003d convert(duration)\n\t\t\t\t\t\tdisplay_path \u003d decode_alarm_data[i].get(\"DisplayPath\")\n\t\t\t\t\t\ttime_stamp \u003d decode_alarm_data[i].get(\"TimeStamp\")\n\t\t\t\t\t\tudt_path \u003d decode_alarm_data[i].get(\"UDT_tag\")\n\t\t\t\t\t\tvendor_id \u003d decode_alarm_data[i].get(\"AddInfo\")\n\t\t\t\t\t\tname \u003d decode_alarm_data[i].get(\"Name\")\n\t\t\t\t\t\talarm_id \u003d i\n\t\t\t\t\t\t\n\t\t\t\t\t\trow\u003d row_builder.build_row(DisplayPath \u003d display_path, Duration \u003d converted_time,\n\t\t\t\t\t\tSeverity \u003d severity, Timestamp \u003d time_stamp, VendorId \u003d vendor_id,\n\t\t\t\t\t\tName \u003d name, AlarmId \u003d alarm_id, StyleClass \u003d style_class)\n\t\t\t\t\t\t\n\t\t\t\t\t\tif alarm_temp_dict.get(udt_path,\"None\") \u003d\u003d \"None\":\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\talarm_temp_dict[udt_path]\u003d {}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif alarm_temp_dict.get(udt_path,{}).get(key,\"None\") \u003d\u003d \"None\":\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\talarm_temp_dict[udt_path][key]\u003d[]\n\t\t\t\t\t\t\n\t#\t\t\t\t\t\tsystem.perspective.print(alarm_temp_dict)\n\t\t\t\t\t\talarm_temp_dict[udt_path][key].append(row)\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor i in alarm_temp_dict:\n\t#\t\t\t\t\tsystem.perspective.print(alarm_temp_dict[i].get(\"Critical\",\"None\"))\t\t\t\t\n\t\t\t\t\tif alarm_temp_dict[i].get(\"Critical\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_critical +\u003d alarm_temp_dict[i].get(\"Critical\")\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"High\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_high +\u003d alarm_temp_dict[i].get(\"High\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Medium\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_medium +\u003d alarm_temp_dict[i].get(\"Medium\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Low\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_low +\u003d alarm_temp_dict[i].get(\"Low\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Diagnostic\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_diagnostic +\u003d alarm_temp_dict[i].get(\"Diagnostic\")\n\t\t\t\t\t\t\n\t\t\t\talarms_data \u003d alarms_critical + alarms_high + alarms_medium + alarms_low + alarms_diagnostic\n\t#\t\t\t\tsystem.perspective.print(alarms_data)\n\t\t\t\tself.props.data \u003d alarms_data\n\t\t\t\t\t\n\t\t\t\t\n\t\telse:\n\t\t\tself.props.data \u003d empty_table()" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Name", + "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": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "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": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Severity", + "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": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Timestamp", + "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": "VendorId", + "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": "AlarmId", + "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": "" + } + ], + "data": [ + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "9ffc0e5d-8cf1-4a0d-9521-594bd55387cd" + }, + "DisplayPath": { + "value": "PLC01_1510_11_49/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "00:06:59" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:54:32" + }, + "VendorId": { + "value": "\u003d01+1510.11.49" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "29a021f5-cd24-4cc3-bc8b-50ba99e5fb0a" + }, + "DisplayPath": { + "value": "PLC60_1220_44_01/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "02:17:50" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 09:43:40" + }, + "VendorId": { + "value": "\u003d60+1220.44.01-B206.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "f0b4bb7e-8a90-4a37-b2b1-1b40a8b22da9" + }, + "DisplayPath": { + "value": "PLC09_1010_51_02/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "01:19:36" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 10:41:55" + }, + "VendorId": { + "value": "\u003d09+1010.51.02-B811.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "31041a1d-0e60-49df-8343-4dc8fd71addc" + }, + "DisplayPath": { + "value": "PLC08_2050_15_09/OPC/inAlarms0/8_Slack chain detection" + }, + "Duration": { + "value": "12:06:12" + }, + "Name": { + "value": "8_Slack chain detection" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-11 23:55:18" + }, + "VendorId": { + "value": "\u003d08+2050.15.09" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "0af8e42f-3b41-4dd0-a5c9-31457343d138" + }, + "DisplayPath": { + "value": "PLC40_1300_01_01/OPC/inAlarms0/0_Error rate at update too high" + }, + "Duration": { + "value": "03:51:00" + }, + "Name": { + "value": "0_Error rate at update too high" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 08:10:30" + }, + "VendorId": { + "value": "\u003d40+1300.01.01-B602.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "279c06bb-fa62-452f-8cb6-7821e26db4b9" + }, + "DisplayPath": { + "value": "PLC02_1510_11_01/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d02+1510.11.01" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "e7fa9539-2805-4f6f-8906-3aa3ccbb5baa" + }, + "DisplayPath": { + "value": "PLC51_1211_91_02/OPC/inAlarms0/1_Local motor starter error" + }, + "Duration": { + "value": "00:05:26" + }, + "Name": { + "value": "1_Local motor starter error" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:56:04" + }, + "VendorId": { + "value": "\u003d51+1211.91.02-M1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "cd60a658-cc9e-4c6c-a344-02f64cac30d3" + }, + "DisplayPath": { + "value": "PLC70/OPC/inAlarms0/23_Power supply contactor error" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "23_Power supply contactor error" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:31" + }, + "VendorId": { + "value": "\u003d70+S01-KM003" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "e48406f1-f292-4e31-9eb6-16a04441b3aa" + }, + "DisplayPath": { + "value": "PLC71/OPC/inAlarms0/0_Profinet node fault" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "0_Profinet node fault" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d71+PN212-A001" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "7187a1cd-c430-4dd4-bf8b-44edb5fe2206" + }, + "DisplayPath": { + "value": "PLC71/OPC/inAlarms0/2_ASI-Gateway error" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "2_ASI-Gateway error" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d71+S01-A001" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "3f4afc70-4fd2-41b6-89e8-394644027469" + }, + "DisplayPath": { + "value": "PLC71/OPC/inAlarms0/4_ASI-Gateway error" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "4_ASI-Gateway error" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d71+S01-A002" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "015c963c-eb92-4d86-b322-ef5ffaecd98d" + }, + "DisplayPath": { + "value": "PLC09_1010_23_33/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "00:17:41" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:43:49" + }, + "VendorId": { + "value": "\u003d09+1010.23.33-B222.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "e647c74c-a952-45bb-b18b-8e6c32fee8ef" + }, + "DisplayPath": { + "value": "PLC60_1220_44_05/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "04:24:23" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 07:37:08" + }, + "VendorId": { + "value": "\u003d60+1220.44.05-B206.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "0bc4bfed-efed-4310-ba28-e43fcf8df3e4" + }, + "DisplayPath": { + "value": "ARSAW1408/OPC/inAlarms2/6_Photo eye blocked" + }, + "Duration": { + "value": "00:04:06" + }, + "Name": { + "value": "6_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:57:24" + }, + "VendorId": { + "value": "\u003dARSAW1408+05.22-B109.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "c62ab15f-7552-4ee8-bb3a-75ec1fb471ef" + }, + "DisplayPath": { + "value": "PLC1000_1100_06_91/OPC/inAlarms0/2_No-Read rate at reading system too high" + }, + "Duration": { + "value": "00:10:44" + }, + "Name": { + "value": "2_No-Read rate at reading system too high" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:50:46" + }, + "VendorId": { + "value": "\u003dP1000+1100.06.91.E01-U1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "030d8d08-02a9-4dfa-a4a4-80d4300e9a1e" + }, + "DisplayPath": { + "value": "ARSAW1404/OPC/inAlarms2/2_Photo eye blocked" + }, + "Duration": { + "value": "00:06:24" + }, + "Name": { + "value": "2_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:55:07" + }, + "VendorId": { + "value": "\u003dARSAW1404+05.13-B111.1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "3a194b9f-8fdf-4b1e-b728-33174d7b3f04" + }, + "DisplayPath": { + "value": "ARSAW1404/OPC/inAlarms2/3_Photo eye blocked" + }, + "Duration": { + "value": "00:05:56" + }, + "Name": { + "value": "3_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:55:34" + }, + "VendorId": { + "value": "\u003dARSAW1404+05.14-B111.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "47014921-2fe8-4c02-8658-27bf3d2bc0d3" + }, + "DisplayPath": { + "value": "PLC02_1510_11_14/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "00:11:34" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:49:56" + }, + "VendorId": { + "value": "\u003d02+1510.11.14" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "d53caa27-7164-446b-8673-3ce152946046" + }, + "DisplayPath": { + "value": "PLC1000_1100_06_01/OPC/inAlarms0/0_Error rate at update too high" + }, + "Duration": { + "value": "00:01:46" + }, + "Name": { + "value": "0_Error rate at update too high" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:59:44" + }, + "VendorId": { + "value": "\u003dP1000+1100.06.01-B202.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "29c088ad-f890-4e99-8452-45792542255d" + }, + "DisplayPath": { + "value": "PLC01_1510_11_32/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "00:13:37" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:47:53" + }, + "VendorId": { + "value": "\u003d01+1510.11.32" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "66d7fd3a-ade4-4d6b-98bd-f3e782ee94da" + }, + "DisplayPath": { + "value": "PLC01_1510_11_35/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "00:10:21" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:51:09" + }, + "VendorId": { + "value": "\u003d01+1510.11.35" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "43f91251-1782-49c3-b45a-0c70978778a1" + }, + "DisplayPath": { + "value": "PLC66_1220_63_40/OPC/inAlarms0/7_Photo eye blocked" + }, + "Duration": { + "value": "00:02:49" + }, + "Name": { + "value": "7_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:58:41" + }, + "VendorId": { + "value": "\u003d66+1220.63.40-B205.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "d4c3e86d-5cab-47de-8562-48b4fc5c063b" + }, + "DisplayPath": { + "value": "ARSAW1501/OPC/inAlarms2/2_Photo eye blocked" + }, + "Duration": { + "value": "00:25:20" + }, + "Name": { + "value": "2_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:36:10" + }, + "VendorId": { + "value": "\u003dARSAW1501+05.13-B111.1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "a992380e-6a60-4388-9fc1-b76b052a3641" + }, + "DisplayPath": { + "value": "PLC02_1510_87_15/OPC/inAlarms0/5_Chute not active" + }, + "Duration": { + "value": "00:17:01" + }, + "Name": { + "value": "5_Chute not active" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:44:29" + }, + "VendorId": { + "value": "\u003d02+1510.87.15" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "4457c4eb-9a49-463b-ba28-362fda48ce12" + }, + "DisplayPath": { + "value": "PLC20_1200_22_01/OPC/inAlarms0/5_Chain over length detection" + }, + "Duration": { + "value": "04:43:25" + }, + "Name": { + "value": "5_Chain over length detection" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 07:18:05" + }, + "VendorId": { + "value": "\u003d20+1200.22.01" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "706a7319-3b58-4e57-ad89-d97f8aee67c1" + }, + "DisplayPath": { + "value": "PLC09_1010_13_31/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "00:11:09" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-12 11:50:21" + }, + "VendorId": { + "value": "\u003d09+1010.13.31-B122.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/High" + }, + "value": { + "AlarmId": { + "value": "70bbd7ad-80fb-4c24-9a95-9d93ab13c85f" + }, + "DisplayPath": { + "value": "PLC66_1220_64_07/OPC/inAlarms0/0_Photo eye blocked" + }, + "Duration": { + "value": "02:30:02" + }, + "Name": { + "value": "0_Photo eye blocked" + }, + "Severity": { + "value": "3. High" + }, + "Timestamp": { + "value": "2022-08-10 09:31:28" + }, + "VendorId": { + "value": "\u003d66+1220.64.07-B206.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "AlarmId": { + "value": "645b753f-c602-4e63-a841-e54160a602ba" + }, + "DisplayPath": { + "value": "SLAM302/OPC/ActiveEvents_0/Both Printers 1 Label Stop" + }, + "Duration": { + "value": "01:41:34" + }, + "Name": { + "value": "Both Printers 1 Label Stop" + }, + "Severity": { + "value": "2. Medium" + }, + "Timestamp": { + "value": "2022-08-12 10:19:56" + }, + "VendorId": { + "value": "" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "AlarmId": { + "value": "ddf12c1a-3faa-48c8-a3c9-62105eade741" + }, + "DisplayPath": { + "value": "SLAM305/OPC/ActiveEvents_1/Printer 2 Fault" + }, + "Duration": { + "value": "01:22:45" + }, + "Name": { + "value": "Printer 2 Fault" + }, + "Severity": { + "value": "2. Medium" + }, + "Timestamp": { + "value": "2022-08-12 10:38:45" + }, + "VendorId": { + "value": "" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "AlarmId": { + "value": "27d184d3-66b7-4309-a045-b7830a662fc9" + }, + "DisplayPath": { + "value": "SLAM305/OPC/ActiveEvents_0/Printer 1 Fault" + }, + "Duration": { + "value": "01:22:45" + }, + "Name": { + "value": "Printer 1 Fault" + }, + "Severity": { + "value": "2. Medium" + }, + "Timestamp": { + "value": "2022-08-12 10:38:45" + }, + "VendorId": { + "value": "" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Medium" + }, + "value": { + "AlarmId": { + "value": "8017709f-b8b6-4d83-9d30-b4d858c5c522" + }, + "DisplayPath": { + "value": "PLC1000_1100_35_01/OPC/inAlarms0/2_Stop button pushed" + }, + "Duration": { + "value": "00:03:01" + }, + "Name": { + "value": "2_Stop button pushed" + }, + "Severity": { + "value": "2. Medium" + }, + "Timestamp": { + "value": "2022-08-12 11:58:29" + }, + "VendorId": { + "value": "\u003dP1000+1100.35.01.B01-KA2.11A-S521.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "563c8152-fde4-4616-b5e3-3cb1a004bb75" + }, + "DisplayPath": { + "value": "PLC09_1010_32_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "23:25:42" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-11 12:35:48" + }, + "VendorId": { + "value": "\u003d09+1010.32.40-B304.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "78f1c489-0e24-423c-a2cb-7614d18c8e4b" + }, + "DisplayPath": { + "value": "PLC09_1010_32_40/OPC/inAlarms0/2_Full 75%" + }, + "Duration": { + "value": "12:00:57" + }, + "Name": { + "value": "2_Full 75%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 00:00:33" + }, + "VendorId": { + "value": "\u003d09+1010.32.40-B304.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "fbbb85b0-d18d-4d36-8168-94b0187b3809" + }, + "DisplayPath": { + "value": "PLC09_1010_32_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d09+1010.32.40-B304.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "921e2af7-cd0a-481a-aa63-062881e93aa6" + }, + "DisplayPath": { + "value": "PLC09_1010_32_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "00:10:33" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:50:57" + }, + "VendorId": { + "value": "\u003d09+1010.32.40-B304.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "14d1d1d8-0c28-4c96-95cb-4aeb5d326b0e" + }, + "DisplayPath": { + "value": "SLAM306/OPC/ActiveEvents_0/Upstream Not Running" + }, + "Duration": { + "value": "00:05:16" + }, + "Name": { + "value": "Upstream Not Running" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:56:14" + }, + "VendorId": { + "value": "" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "89bba546-f28d-489d-8a5d-908990fc0c2c" + }, + "DisplayPath": { + "value": "PLC09_1010_12_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "00:33:01" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:28:29" + }, + "VendorId": { + "value": "\u003d09+1010.12.40-B104.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "c06c4c9a-693b-4e44-b28d-1cc883f46581" + }, + "DisplayPath": { + "value": "PLC09_1010_12_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "01:23:43" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 10:37:48" + }, + "VendorId": { + "value": "\u003d09+1010.12.40-B104.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "33550149-53b7-4490-8d39-06c9cee5ce63" + }, + "DisplayPath": { + "value": "PLC09_1010_12_40/OPC/inAlarms0/2_Full 75%" + }, + "Duration": { + "value": "01:19:44" + }, + "Name": { + "value": "2_Full 75%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 10:41:47" + }, + "VendorId": { + "value": "\u003d09+1010.12.40-B104.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "15b4dc66-968b-4b13-9fdd-43e1e887e4b1" + }, + "DisplayPath": { + "value": "PLC09_1010_12_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "00:04:37" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:56:53" + }, + "VendorId": { + "value": "\u003d09+1010.12.40-B104.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "5bf89243-965b-4049-a5b4-65e0cdffbf9a" + }, + "DisplayPath": { + "value": "PLC1000_1100_10_25/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:01:10" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:20" + }, + "VendorId": { + "value": "\u003dP1000+1100.10.25-B323.1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "63c21fc9-5b3a-4f3f-9076-90145af9d833" + }, + "DisplayPath": { + "value": "PLC1000_1100_32_13/OPC/inAlarms0/0_Full 75%" + }, + "Duration": { + "value": "00:00:38" + }, + "Name": { + "value": "0_Full 75%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:52" + }, + "VendorId": { + "value": "\u003dP1000+1100.32.13-B503.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "08756b9a-24cd-4f90-b7a2-98d0d74b873d" + }, + "DisplayPath": { + "value": "PLC1000_1100_04_25/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:02:00" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:59:30" + }, + "VendorId": { + "value": "\u003dP1000+1100.04.25-B122.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "46ca2c01-03cd-47c2-9576-feb03e4ef9ca" + }, + "DisplayPath": { + "value": "PLC1000_1100_10_17/OPC/inAlarms0/0_Full 50%" + }, + "Duration": { + "value": "00:00:58" + }, + "Name": { + "value": "0_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:32" + }, + "VendorId": { + "value": "\u003dP1000+1100.10.17-B321.1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "349731d9-7024-41d8-8345-9438180bfafe" + }, + "DisplayPath": { + "value": "PLC1000_1100_04_17/OPC/inAlarms0/0_Full 50%" + }, + "Duration": { + "value": "00:01:34" + }, + "Name": { + "value": "0_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:59:56" + }, + "VendorId": { + "value": "\u003dP1000+1100.04.17-B121.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "e21645ca-8629-4117-8f6c-ac980405c027" + }, + "DisplayPath": { + "value": "PLC1000_1100_23_30/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:25:44" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:35:46" + }, + "VendorId": { + "value": "\u003dP1000+1100.23.30-B412.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "cb7576ba-218a-4630-98e2-cf8a99313f43" + }, + "DisplayPath": { + "value": "PLC09_3040_22_60/OPC/inAlarms0/2_Full 25%" + }, + "Duration": { + "value": "00:15:03" + }, + "Name": { + "value": "2_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:46:27" + }, + "VendorId": { + "value": "\u003d09+3040.22.60-B721.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "b2802772-4aed-4722-b300-812843fd49d8" + }, + "DisplayPath": { + "value": "PLC1000_1100_33_10/OPC/inAlarms0/0_Full 50%" + }, + "Duration": { + "value": "00:00:38" + }, + "Name": { + "value": "0_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:52" + }, + "VendorId": { + "value": "\u003dP1000+1100.33.10-B509.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "1fd3ac98-2636-4ba1-8ff5-2edef1b446f2" + }, + "DisplayPath": { + "value": "PLC09_2040_22_60/OPC/inAlarms0/0_Full 50%" + }, + "Duration": { + "value": "00:00:55" + }, + "Name": { + "value": "0_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:35" + }, + "VendorId": { + "value": "\u003d09+2040.22.60-B621.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "f5303a9d-3b13-482b-a73d-0c31f8138ea5" + }, + "DisplayPath": { + "value": "PLC09_2040_22_60/OPC/inAlarms0/2_Full 25%" + }, + "Duration": { + "value": "03:19:12" + }, + "Name": { + "value": "2_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 08:42:19" + }, + "VendorId": { + "value": "\u003d09+2040.22.60-B621.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "cb8ee399-0e56-48ad-b1df-2b9a3a7c4acf" + }, + "DisplayPath": { + "value": "PLC09_1010_22_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "00:31:56" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:29:34" + }, + "VendorId": { + "value": "\u003d09+1010.22.40-B204.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "fc2ea1bd-3565-4c2e-b401-9c66dea60498" + }, + "DisplayPath": { + "value": "PLC09_1010_22_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "00:01:07" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 12:00:23" + }, + "VendorId": { + "value": "\u003d09+1010.22.40-B204.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "714b2ff3-75d9-4980-9f5f-02ab18a1ec78" + }, + "DisplayPath": { + "value": "PLC09_1010_22_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "00:32:55" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:28:35" + }, + "VendorId": { + "value": "\u003d09+1010.22.40-B204.6" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "f3a117e7-bd0c-4d71-8000-3e739f332484" + }, + "DisplayPath": { + "value": "PLC09_1010_22_40/OPC/inAlarms0/2_Full 75%" + }, + "Duration": { + "value": "00:07:37" + }, + "Name": { + "value": "2_Full 75%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:53:53" + }, + "VendorId": { + "value": "\u003d09+1010.22.40-B204.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "e2baa964-eb4c-4a92-933d-3b5e2d1664e0" + }, + "DisplayPath": { + "value": "PLC1000_1100_33_22/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:02:35" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:58:55" + }, + "VendorId": { + "value": "\u003dP1000+1100.33.22-B512.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "3a380b2a-08f4-4fff-97f9-961e70d55736" + }, + "DisplayPath": { + "value": "PLC1000_1100_08_19/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:03:05" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:58:25" + }, + "VendorId": { + "value": "\u003dP1000+1100.08.19-B305.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Low" + }, + "value": { + "AlarmId": { + "value": "8e868e64-edcb-405f-b8af-dfbb81344088" + }, + "DisplayPath": { + "value": "PLC1000_1100_08_13/OPC/inAlarms0/0_Full 50%" + }, + "Duration": { + "value": "00:03:01" + }, + "Name": { + "value": "0_Full 50%" + }, + "Severity": { + "value": "1. Low" + }, + "Timestamp": { + "value": "2022-08-12 11:58:29" + }, + "VendorId": { + "value": "\u003dP1000+1100.08.13-B304.1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "854d4883-9957-40dc-8590-5bdf800cd9ec" + }, + "DisplayPath": { + "value": "PLC01_1510_11_45/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "01:03:05" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:58:25" + }, + "VendorId": { + "value": "\u003d01+1510.11.45-B211.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "4e0e235c-40b2-43e1-8df0-05acd23f42cc" + }, + "DisplayPath": { + "value": "PLC01_1510_11_44/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "02:26:44" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 09:34:46" + }, + "VendorId": { + "value": "\u003d01+1510.11.44-B211.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "7f19e592-3937-4b82-b1a0-080f18028e58" + }, + "DisplayPath": { + "value": "PLC01_1510_11_47/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:17:59" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:43:31" + }, + "VendorId": { + "value": "\u003d01+1510.11.47-B212.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "40d2a84f-674c-4e2e-b1f3-cda897a7edc5" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_73_CH_1500_73_04/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:10:26" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:51:04" + }, + "VendorId": { + "value": "CH-1500.73.04" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "0454374e-7fbf-49d9-b1cc-7f639a953a8d" + }, + "DisplayPath": { + "value": "PLC01_1510_11_48/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:26:03" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:35:27" + }, + "VendorId": { + "value": "\u003d01+1510.11.48-B213.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "3dd7ef75-ab85-4614-a3ac-372003761dda" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_73_CH_1500_73_01/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:13:42" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:47:48" + }, + "VendorId": { + "value": "CH-1500.73.01" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d3da023c-ce0e-4cbc-8201-f3976d89e128" + }, + "DisplayPath": { + "value": "PLC02_1510_88_11/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:06:35" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:54:56" + }, + "VendorId": { + "value": "\u003d02+1510.88.11-B323.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d45a6985-c242-4645-b3ac-ab34e5a2462b" + }, + "DisplayPath": { + "value": "PLC65_1220_53_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "00:04:48" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:56:42" + }, + "VendorId": { + "value": "\u003d65+1220.53.40-B205.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "374d4319-4ae0-4111-8093-880f26803e23" + }, + "DisplayPath": { + "value": "PLC65_1220_53_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "01:40:44" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:20:46" + }, + "VendorId": { + "value": "\u003d65+1220.53.40-B205.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "22bff280-17a1-4e40-bf84-a35fb602c8c7" + }, + "DisplayPath": { + "value": "PLC01_1510_11_41/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:34:06" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:27:24" + }, + "VendorId": { + "value": "\u003d01+1510.11.41-B209.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "7b1adf51-09b5-44ca-aadd-f883865350e5" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_382/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "01:27:29" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:34:01" + }, + "VendorId": { + "value": "CAS-1500.01.382" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "438cb2f7-4b48-468f-9e18-39a03b093f5c" + }, + "DisplayPath": { + "value": "PLC71_1260_73_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:31" + }, + "VendorId": { + "value": "\u003d71+1260.73.40-B206.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "85680dc1-f7ba-4da9-9d60-ba600b049882" + }, + "DisplayPath": { + "value": "PLC01_1510_11_59/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:23" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:07" + }, + "VendorId": { + "value": "\u003d01+1510.11.59-B220.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "13e31396-f540-4b19-9d68-a55ba579e03b" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_138/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:02" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:28" + }, + "VendorId": { + "value": "CAS-1500.01.138" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "ea6d6012-5d3d-42e5-8396-f1f2b6a95476" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_255/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:47" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:43" + }, + "VendorId": { + "value": "CAS-1500.01.255" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "397c2848-56a9-4c5f-8fc9-830395c649e2" + }, + "DisplayPath": { + "value": "PLC01_1510_11_50/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:59" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:31" + }, + "VendorId": { + "value": "\u003d01+1510.11.50-B214.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "eae02a75-c090-4863-b71e-0966519e1a04" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_010/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:37" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:53" + }, + "VendorId": { + "value": "CAS-1500.01.010" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "cbb9023a-17f8-42c7-83d2-e433bb9ec8b7" + }, + "DisplayPath": { + "value": "PLC01_1510_11_51/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:55:15" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:06:16" + }, + "VendorId": { + "value": "\u003d01+1510.11.51-B214.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "43fc342e-6b83-410d-9bab-ee00e1be9bbe" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_493/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:36" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:55" + }, + "VendorId": { + "value": "CAS-1500.01.493" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "1b509e3c-efa5-4201-b23f-4b33f9d64c17" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_493/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:23" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:07" + }, + "VendorId": { + "value": "CAS-1500.01.493" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "6dd055ef-d8b3-4eb9-b7c6-cd3cdec1998a" + }, + "DisplayPath": { + "value": "FSC10_IFZ_1500_56_CH_1500_56_09/OPC/inAlarms0/1.Bin contains item" + }, + "Duration": { + "value": "00:04:00" + }, + "Name": { + "value": "1.Bin contains item" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:57:30" + }, + "VendorId": { + "value": "CH-1500.56.09" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "5e625e5b-8f9b-4608-91f1-f01fda8d3f66" + }, + "DisplayPath": { + "value": "PLC66_1220_26_20/OPC/inAlarms0/0_Full 25%" + }, + "Duration": { + "value": "00:00:18" + }, + "Name": { + "value": "0_Full 25%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:12" + }, + "VendorId": { + "value": "\u003d66+1220.26.20-B122.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "755fd504-7ed5-4583-a2ae-43c48a7cdc93" + }, + "DisplayPath": { + "value": "PLC03_1251_32_03/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d03+1251.32.03-B204.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "4f86d055-66b7-4a68-b4c1-9cf704674418" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_206/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:48" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:42" + }, + "VendorId": { + "value": "CAS-1500.01.206" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "c297c3da-c8d3-4035-b734-b4aeb855a353" + }, + "DisplayPath": { + "value": "PLC64_1230_43_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "02:41:22" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 09:20:08" + }, + "VendorId": { + "value": "\u003d64+1230.43.40-B205.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "670a4052-ee28-4124-9d96-8c679b19ee1b" + }, + "DisplayPath": { + "value": "PLC64_1230_43_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "00:03:07" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:58:23" + }, + "VendorId": { + "value": "\u003d64+1230.43.40-B205.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "fa29dd21-fcd5-43b0-babd-4743e6f37226" + }, + "DisplayPath": { + "value": "PLC64_1230_43_40/OPC/inAlarms0/2_Full 75%" + }, + "Duration": { + "value": "02:41:00" + }, + "Name": { + "value": "2_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 09:20:30" + }, + "VendorId": { + "value": "\u003d64+1230.43.40-B204.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "bcf1f256-7cc7-46eb-95e1-425bf8b34dec" + }, + "DisplayPath": { + "value": "PLC64_1230_43_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "00:01:20" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:10" + }, + "VendorId": { + "value": "\u003d64+1230.43.40-B204.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "9cbe00a0-c9f9-4167-85e4-8e71c015bc47" + }, + "DisplayPath": { + "value": "PLC01_1510_81_03/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d01+1510.81.03-B303.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "0b49a15e-5338-4fea-abb2-64694c6be89a" + }, + "DisplayPath": { + "value": "PLC01_1510_81_04/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:04:25" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:57:05" + }, + "VendorId": { + "value": "\u003d01+1510.81.04-B303.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "e4a40063-c29d-4d52-91bc-02f89b0db027" + }, + "DisplayPath": { + "value": "PLC01_1510_81_05/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:05:23" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:56:07" + }, + "VendorId": { + "value": "\u003d01+1510.81.05-B304.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "4f803ae4-b11a-414a-b540-1d26de70d332" + }, + "DisplayPath": { + "value": "PLC01_1510_81_05/OPC/inAlarms0/1_Full 100%" + }, + "Duration": { + "value": "00:00:31" + }, + "Name": { + "value": "1_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:59" + }, + "VendorId": { + "value": "\u003d01+1510.81.05-B304.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "286b8c5f-08c7-490e-bc83-6e695e8a9cf8" + }, + "DisplayPath": { + "value": "PLC01_1510_81_01/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "23:49:59" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-11 12:11:31" + }, + "VendorId": { + "value": "\u003d01+1510.81.01-B302.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "3a586506-b523-493f-8979-3418052bb5fe" + }, + "DisplayPath": { + "value": "PLC01_1510_81_02/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d01+1510.81.02-B302.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "29742c35-ec12-4660-b080-d8a347e65f4f" + }, + "DisplayPath": { + "value": "PLC60_1220_43_40/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "12:30:12" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-11 23:31:18" + }, + "VendorId": { + "value": "\u003d60+1220.43.40-B205.4" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "f08d921d-38cc-4356-b762-b031986cd4d3" + }, + "DisplayPath": { + "value": "PLC60_1220_43_40/OPC/inAlarms0/2_Full 75%" + }, + "Duration": { + "value": "03:02:44" + }, + "Name": { + "value": "2_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 08:58:46" + }, + "VendorId": { + "value": "\u003d60+1220.43.40-B204.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "da2bd9bf-2361-4f69-90db-ec1e432dfbd2" + }, + "DisplayPath": { + "value": "PLC60_1220_43_40/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "00:00:24" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:06" + }, + "VendorId": { + "value": "\u003d60+1220.43.40-B204.2" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "e87e2a68-96ea-4ff5-b6db-09160dc7dbf2" + }, + "DisplayPath": { + "value": "PLC60_1220_43_40/OPC/inAlarms0/6_Full 25%" + }, + "Duration": { + "value": "12:41:17" + }, + "Name": { + "value": "6_Full 25%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-11 23:20:14" + }, + "VendorId": { + "value": "\u003d60+1220.43.40-B205.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "dff5603a-642d-4b5b-95fa-d4f87cf849a0" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_73_CH_1500_73_18/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:07:05" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:54:25" + }, + "VendorId": { + "value": "CH-1500.73.18" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "94f23ca5-a383-4f4e-8b92-8b2b92d3364a" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_030/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:44" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:46" + }, + "VendorId": { + "value": "CAS-1500.01.030" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "4652cb60-2cb8-44a8-99cc-3ae1c0462099" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_73_CH_1500_73_10/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:08:32" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:52:58" + }, + "VendorId": { + "value": "CH-1500.73.10" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "946a62fa-dfb6-416e-9960-f44a0721e1cd" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_71_CH_1500_71_01/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:24:55" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:35" + }, + "VendorId": { + "value": "CH-1500.71.01" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "c00c25ea-e79e-4d73-b5f6-82c9d4a0b865" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_40_AM1/Expressions/Quality/Tag quality error" + }, + "Duration": { + "value": "00:24:55" + }, + "Name": { + "value": "Tag quality error" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:35" + }, + "VendorId": { + "value": "\"One or more tags has bad quality.\"" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "8bc107e6-e1ca-4b63-9608-f1e17067b48f" + }, + "DisplayPath": { + "value": "M1000/Expressions/Quality/Tag quality error" + }, + "Duration": { + "value": "02:30:16" + }, + "Name": { + "value": "Tag quality error" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:14" + }, + "VendorId": { + "value": "\"One or more tags has bad quality.\"" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "f9b13207-66be-4d89-837b-c7468667c273" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_79_CH_1500_79_15/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:17:07" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:44:23" + }, + "VendorId": { + "value": "CH-1500.79.15" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "00a1494e-b5bd-445a-89cc-9092f3eb1125" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_229/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:35" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:55" + }, + "VendorId": { + "value": "CAS-1500.01.229" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "a9d01ff6-e4c6-42ab-a317-57d5fa104d0a" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_503/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:07" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:23" + }, + "VendorId": { + "value": "CAS-1500.01.503" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "55a32ec8-90a8-494f-8635-f1bef05f68e9" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_224/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:48" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:42" + }, + "VendorId": { + "value": "CAS-1500.01.224" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "cbfadbdb-ac4a-40da-abbd-def9685097ed" + }, + "DisplayPath": { + "value": "PLC03_1251_50_15/OPC/inAlarms0/1_Plug not plugged" + }, + "Duration": { + "value": "02:30:02" + }, + "Name": { + "value": "1_Plug not plugged" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:28" + }, + "VendorId": { + "value": "\u003d03+1251.50.15-G1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "ecfc9406-f3d3-4876-88bb-04390af3ceda" + }, + "DisplayPath": { + "value": "PLC03_1251_50_12/OPC/inAlarms0/1_Plug not plugged" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "1_Plug not plugged" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d03+1251.50.12-G1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "e7eb3c1b-3b7e-45d5-adeb-684e1674a078" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_75_CH_1500_75_05/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:00:35" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:55" + }, + "VendorId": { + "value": "CH-1500.75.05" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d149d26e-b48b-4d19-984f-b2219c80b591" + }, + "DisplayPath": { + "value": "PLC03_1251_50_09/OPC/inAlarms0/1_Plug not plugged" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "1_Plug not plugged" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d03+1251.50.09-G1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "7d24df29-18c5-44be-bba5-15a5ad3df72e" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_71_CH_1500_71_14/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:11:41" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:49:50" + }, + "VendorId": { + "value": "CH-1500.71.14" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "990229a8-4019-4fa5-9785-04834affaea6" + }, + "DisplayPath": { + "value": "PLC66_1220_24_30/OPC/inAlarms0/4_Full 50%" + }, + "Duration": { + "value": "00:30:41" + }, + "Name": { + "value": "4_Full 50%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:30:49" + }, + "VendorId": { + "value": "\u003d66+1220.24.30-B119.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "fd270f76-7a6a-453a-b22d-10ed814270d5" + }, + "DisplayPath": { + "value": "PLC47_1210_08_01/OPC/inAlarms0/2_Area is not empty" + }, + "Duration": { + "value": "01:46:57" + }, + "Name": { + "value": "2_Area is not empty" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:14:33" + }, + "VendorId": { + "value": "\u003d47+1210.08.01-BE307.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "8df1dbd6-c1e1-42db-9698-fd89563916b1" + }, + "DisplayPath": { + "value": "PLC02_1510_11_30/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:31" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:59" + }, + "VendorId": { + "value": "\u003d02+1510.11.30-B220.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "53e2d15e-23bf-4a87-91b0-c1789a2d86aa" + }, + "DisplayPath": { + "value": "PLC25_1210_01_01/OPC/inAlarms0/2_Area is not empty" + }, + "Duration": { + "value": "04:12:43" + }, + "Name": { + "value": "2_Area is not empty" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 07:48:47" + }, + "VendorId": { + "value": "\u003d25+1210.01.01-BE307.0" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "7cbb5255-339e-463d-9917-aeb232fc2337" + }, + "DisplayPath": { + "value": "FSC10_IFZ_1500_54_CH_1500_54_09/OPC/inAlarms0/1.Bin contains item" + }, + "Duration": { + "value": "00:01:13" + }, + "Name": { + "value": "1.Bin contains item" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:17" + }, + "VendorId": { + "value": "CH-1500.54.09" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "891eda89-5a56-4da2-835d-00da69673cc6" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_450/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:38" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:52" + }, + "VendorId": { + "value": "CAS-1500.01.450" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "dfa68a57-ceb1-4c51-ad44-4d3e3768cde9" + }, + "DisplayPath": { + "value": "PLC70_1260_31_02/OPC/inAlarms0/1_Plug not plugged" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "1_Plug not plugged" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:31" + }, + "VendorId": { + "value": "\u003d70+1260.31.02-G1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "98aaaa33-9f9b-4685-83c4-ab226638dbd3" + }, + "DisplayPath": { + "value": "FSC10_IFZ_1500_60_BF_1500_60_01/OPC/inAlarms0/5.Speed difference" + }, + "Duration": { + "value": "00:00:01" + }, + "Name": { + "value": "5.Speed difference" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:30" + }, + "VendorId": { + "value": "BF-1500.60.01" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "9f44974d-29a8-4cda-8c05-1ac3c36bfa25" + }, + "DisplayPath": { + "value": "PLC08_1280_14_40/OPC/inAlarms0/2_Full 50%" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "2_Full 50%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:31" + }, + "VendorId": { + "value": "\u003d08+1280.14.40-B219.5" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "bdee063d-e1e5-4900-bfed-550c8376f3e4" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_609/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:32" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:58" + }, + "VendorId": { + "value": "CAS-1500.01.609" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "2fd54271-08f9-41e5-b740-84b1532ab584" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_128/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:00:59" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:31" + }, + "VendorId": { + "value": "CAS-1500.01.128" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "133b5915-dcf7-4565-becb-9ced98576d96" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_128/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:50" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:40" + }, + "VendorId": { + "value": "CAS-1500.01.128" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d6f2a2ce-d65b-4d7b-aaed-859ea44cebb0" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_487/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:06:01" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:55:29" + }, + "VendorId": { + "value": "CAS-1500.01.487" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d30d38ae-95c6-40a2-8adb-d653932c90f4" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_488/OPC/inAlarms0/18.Item Blocked for Sorting" + }, + "Duration": { + "value": "00:06:00" + }, + "Name": { + "value": "18.Item Blocked for Sorting" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:55:30" + }, + "VendorId": { + "value": "CAS-1500.01.488" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "22a6a9e5-3f5d-45ea-8d9d-1023baaf380b" + }, + "DisplayPath": { + "value": "PLC02_1510_11_07/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:03:10" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:58:20" + }, + "VendorId": { + "value": "\u003d02+1510.11.07-B208.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "eba08435-1562-4299-9c1b-68b772151c1a" + }, + "DisplayPath": { + "value": "FSC10_OFZ_1500_78_CH_1500_78_05/OPC/inAlarms0/3.Chute Full" + }, + "Duration": { + "value": "00:02:44" + }, + "Name": { + "value": "3.Chute Full" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:58:46" + }, + "VendorId": { + "value": "CH-1500.78.05" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "295e057f-99ec-46b3-83d0-01f175608357" + }, + "DisplayPath": { + "value": "FSC10_ACZ_1500_57_BF_1500_57_02/OPC/inAlarms0/5.Speed difference" + }, + "Duration": { + "value": "00:04:40" + }, + "Name": { + "value": "5.Speed difference" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:56:51" + }, + "VendorId": { + "value": "BF-1500.57.02" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "051823b0-7e26-45f6-b05d-57c1919387a4" + }, + "DisplayPath": { + "value": "INBOUND/RECEIVE/Test_Tag/Expressions/Quality/Tag quality error" + }, + "Duration": { + "value": "02:30:15" + }, + "Name": { + "value": "Tag quality error" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:15" + }, + "VendorId": { + "value": "\"One or more tags has bad quality.\"" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "beddd156-0145-4827-9081-933c65b80b1b" + }, + "DisplayPath": { + "value": "PLC02_1510_11_10/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:15" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:15" + }, + "VendorId": { + "value": "\u003d02+1510.11.10-B209.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "2b4f72a0-f52b-46f4-a32e-a5b9ad2f6adb" + }, + "DisplayPath": { + "value": "PLC02_1510_11_15/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "01:08:02" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:53:28" + }, + "VendorId": { + "value": "\u003d02+1510.11.15-B212.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "9b95634f-1f6d-4c7f-8099-1abdaea31058" + }, + "DisplayPath": { + "value": "PLC03_1251_22_03/OPC/inAlarms0/0_Full 100%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "0_Full 100%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d03+1251.22.03-B202.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "c3f32389-61f0-4687-a00c-50b49015d028" + }, + "DisplayPath": { + "value": "FSC10_IFZ_1500_30_CH_1500_30_09/OPC/inAlarms0/1.Bin contains item" + }, + "Duration": { + "value": "00:19:55" + }, + "Name": { + "value": "1.Bin contains item" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:41:35" + }, + "VendorId": { + "value": "CH-1500.30.09" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "f8381bfa-7e1a-4850-b641-94087a4a5c35" + }, + "DisplayPath": { + "value": "PLC01_1510_82_14/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:15" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:15" + }, + "VendorId": { + "value": "\u003d01+1510.82.14-B324.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "45624aff-c8e3-4510-8d0a-4dcb7bf9ba13" + }, + "DisplayPath": { + "value": "PLC01_1510_11_34/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:27" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:01:03" + }, + "VendorId": { + "value": "\u003d01+1510.11.34-B206.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "07102021-c79e-4828-9475-28db828a2365" + }, + "DisplayPath": { + "value": "PLC02_1510_87_12/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:00:47" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 12:00:43" + }, + "VendorId": { + "value": "\u003d02+1510.87.12-B307.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "9604e5b3-14e0-400e-96e1-f22a70a91b00" + }, + "DisplayPath": { + "value": "FSC10_TRZ_1500_01_CAS_1500_01_352/OPC/inAlarms0/16.CAS automatic offline" + }, + "Duration": { + "value": "00:24:43" + }, + "Name": { + "value": "16.CAS automatic offline" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 11:36:47" + }, + "VendorId": { + "value": "CAS-1500.01.352" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "3ebfbb2a-a78a-4599-b3ff-c84058ed4525" + }, + "DisplayPath": { + "value": "PLC03_1251_50_06/OPC/inAlarms0/1_Plug not plugged" + }, + "Duration": { + "value": "02:29:59" + }, + "Name": { + "value": "1_Plug not plugged" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d03+1251.50.06-G1" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "3307a2c0-be8d-4f86-812a-13e4be1d9709" + }, + "DisplayPath": { + "value": "PLC02_1510_11_24/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:11:20" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:50:10" + }, + "VendorId": { + "value": "\u003d02+1510.11.24-B216.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "fb3dd482-20cc-4fbe-9451-4f3b90672994" + }, + "DisplayPath": { + "value": "PLC02_1510_87_06/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:02:42" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:58:48" + }, + "VendorId": { + "value": "\u003d02+1510.87.06-B304.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "6b78811d-b0c7-4d8a-9f36-9781a103f126" + }, + "DisplayPath": { + "value": "PLC02_1510_11_23/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "01:09:41" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 10:51:49" + }, + "VendorId": { + "value": "\u003d02+1510.11.23-B216.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "3b027050-6f4e-4ea7-9c66-43d9bbb8ab67" + }, + "DisplayPath": { + "value": "PLC02_1510_11_27/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:40:01" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:21:30" + }, + "VendorId": { + "value": "\u003d02+1510.11.27-B219.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "c3ec2aca-77d0-4bdc-88c4-21b65873182b" + }, + "DisplayPath": { + "value": "PLC02_1510_11_26/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:08:53" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:52:38" + }, + "VendorId": { + "value": "\u003d02+1510.11.26-B218.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "134ccefa-2375-4e82-92ea-50641d5cc51d" + }, + "DisplayPath": { + "value": "PLC01_1510_82_01/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "02:29:58" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-10 09:31:32" + }, + "VendorId": { + "value": "\u003d01+1510.82.01-B318.3" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "d50e3617-282b-48ce-aead-ecef5ae33d7a" + }, + "DisplayPath": { + "value": "PLC01_1510_82_02/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:07:11" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:54:19" + }, + "VendorId": { + "value": "\u003d01+1510.82.02-B318.7" + } + } + }, + { + "style": { + "classes": "Alarms-Styles/Diagnostic" + }, + "value": { + "AlarmId": { + "value": "ec0a50f8-79e8-4233-b7ae-ebf6d00e7d10" + }, + "DisplayPath": { + "value": "PLC01_1510_82_03/OPC/inAlarms0/3_Full 75%" + }, + "Duration": { + "value": "00:47:03" + }, + "Name": { + "value": "3_Full 75%" + }, + "Severity": { + "value": "0. Warning" + }, + "Timestamp": { + "value": "2022-08-12 11:14:27" + }, + "VendorId": { + "value": "\u003d01+1510.82.03-B319.3" + } + } + } + ], + "resizeMode": "fixed", + "rows": { + "highlight": { + "color": "#FFFF47" + } + }, + "selection": { + "mode": "multiple interval" + }, + "virtualized": false + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Active_tab" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": [ + { + "config": { + "script": "\trow \u003d event.value\n\tcustom_view \u003d row.get(\"path\",\"none\")\n\tif custom_view !\u003d \"None\":\n\t\tequipment_id \u003d custom_view.split(\"/\")[1]\n\t\turl_to_navigate \u003d \"/CustomView/%s/\" % (equipment_id,)\n\t\tsystem.perspective.navigate(page \u003d url_to_navigate)\n\t\tsystem.perspective.sendMessage(\"plc-to-display\", payload \u003d {\"device\":\"none\",\"show_controls\":False,\"area\":\"none\"}, scope \u003d \"page\")\n\t\tsystem.perspective.closePopup(id\u003d \"StatusPopUP\")\n\t" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "draggable": true, + "id": "W1H0Nole", + "modal": false, + "overlayDismiss": false, + "resizable": true, + "showCloseIcon": true, + "title": "InfoPopUp", + "type": "close", + "viewPath": "PopUp-Views/Controller-Equipment/Information", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + ] + } + }, + "meta": { + "name": "Views_list" + }, + "position": { + "basis": "915px", + "grow": 1 + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "path": "/root.custom.views_data" + }, + "type": "property" + } + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Views" + }, + "position": { + "tabIndex": 2 + }, + "type": "ia.container.flex" + } + ], + "custom": { + "views_data": [ + { + "path": "Custom-Views/Detail" + } + ] + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tproject_info \u003d system.perspective.getProjectInfo()\n\tself.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\tequipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ equipment_id)]\n\tself.custom.views_data \u003d views_data\n\t\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "custom.active_alarms": { + "binding": { + "config": { + "expression": "{./Active_tab/AlarmTable.props.data}" + }, + "transforms": [ + { + "code": "\treturn len(value)", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}" + }, + "tagPath": "{0}/Expressions/Status" + }, + "type": "tag" + } + } + }, + "props": { + "menuStyle": { + "fontWeight": "bold" + }, + "tabs": [ + "Alarms", + "Info", + "Views" + ] + }, + "type": "ia.container.tab" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/resource.json new file mode 100644 index 0000000..77f1a67 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-05-22T14:46:32Z" + }, + "lastModificationSignature": "40e954c250fb223e57ab51e0d528183ba468f32a8c0b301376f0d794be6272a5" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/thumbnail.png new file mode 100644 index 0000000..5344c87 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/view.json new file mode 100644 index 0000000..a75de09 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/view.json @@ -0,0 +1,91 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 165, + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "An error occurred while connecting to the database." + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Network or database connection failed. Check your settings or contact IT support." + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "alignItems": "flex-start", + "direction": "column", + "justify": "space-around", + "style": { + "paddingLeft": 5, + "paddingRight": 5 + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "props": { + "primary": false, + "style": { + "marginTop": 3 + }, + "text": "Dismiss" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "alignContent": "flex-start", + "direction": "column", + "justify": "space-around" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/resource.json new file mode 100644 index 0000000..bad9ef9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "bfd6f23ac4d3b9fcd2aa7a2184b89180927ab4fc857f3b4622df504559fd8a3e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/thumbnail.png new file mode 100644 index 0000000..c95f281 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/view.json new file mode 100644 index 0000000..6520bf9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/view.json @@ -0,0 +1,1122 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "home" + } + }, + "params": { + "viewFocus": "value" + }, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.activityLogger.start_time": { + "binding": { + "config": { + "expression": "now()" + }, + "type": "expr" + } + }, + "params.viewFocus": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 326, + "width": 400 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "36px", + "shrink": 0 + }, + "props": { + "style": { + "background-color": "#555555", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Status Filters" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "custom": { + "buttonid": "status_filters/all" + }, + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "script": "\tpayload \u003d {}\n\tif self.props.selected:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\t\n\tpayload[\"data\"] \u003d value\n\t\n\tsystem.perspective.sendMessage(\"select-all-filters\", \n\t\t\t\t\t\t\t\t\tpayload \u003d payload, \n\t\t\t\t\t\t\t\t\tscope \u003d \"view\")" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Select-All", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "expression": "if({session.custom.alarm_filter.show_diagnostic} \u0026\u0026 \r\n{session.custom.alarm_filter.show_gateways} \u0026\u0026\r\n{session.custom.alarm_filter.show_low_alarm} \u0026\u0026\r\n{session.custom.alarm_filter.show_running} \u0026\u0026\r\n{session.custom.alarm_filter.show_camera_jams} \u0026\u0026\r\n{session.custom.alarm_filter.show_fio} \u0026\u0026\r\n{session.custom.alarm_filter.show_safety}, True, False)" + }, + "type": "expr" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Select All" + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/low_alarms" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Low Alarms", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_low_alarm" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show Low Alarms" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data\n\tsystem.perspective.print(data)", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/diagnostic_alarms" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Diagnostic", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_diagnostic" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show Diagnostic Alarms" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/running_status" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Running", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_running" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show Running Status" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/low_alarms" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show-Buttons", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show Buttons" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data\n\tsystem.perspective.print(data)", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/estops_pullChords" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "E-Stops", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_safety" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show E-Stops \u0026 Pull Chords" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/gateways" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show-DPM-MCM", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_gateways" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show DPM \u0026 MCM" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/camera_jams" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show-Camera-Jams", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_camera_jams" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show Camera Jams" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + }, + { + "custom": { + "buttonid": "status_filters/fio_sio" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show-Fios", + "tooltip": { + "delay": 250 + } + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.show_fio" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Show FIO \u0026 SIO" + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "select-all-filters", + "pageScope": false, + "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.input.checkbox" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "grow": 1 + }, + "props": { + "direction": "column", + "justify": "space-between" + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\u0027\u0027)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "box-shadow": "5px 5px 5px", + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 20, + "marginRight": 20, + "marginTop": 5 + }, + "text": "Close" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Status" + }, + "position": { + "basis": "200px", + "shrink": 0 + }, + "props": { + "direction": "column", + "style": { + "borderColor": "#FFFFFF", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "36px", + "shrink": 0 + }, + "props": { + "style": { + "background-color": "#555555", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Accessibility" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "custom": { + "buttonid": "accessibility/color_blind_icons" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Alt Colours" + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.colours.colour_impaired" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Colour-Blind Friendly Icons" + }, + "type": "ia.input.checkbox" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Magnification:" + }, + "type": "ia.display.label" + }, + { + "custom": { + "buttonid": "accessibility/magnify" + }, + "meta": { + "name": "Dropdown" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.magnificaiton" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\ttry:\n\t\tif previousValue.value !\u003d currentValue.value:\n\t\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, self.custom.buttonid)\n\texcept:\n\t\tpass" + } + } + }, + "props": { + "options": [ + { + "label": "x1", + "value": "x1" + }, + { + "label": "x2", + "value": "x2" + }, + { + "label": "x3", + "value": "x3" + }, + { + "label": "None", + "value": "None" + } + ], + "placeholder": { + "text": "" + }, + "style": { + "marginBottom": 3, + "marginTop": 3 + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "36px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": 80 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "36px", + "shrink": 0 + }, + "props": { + "style": { + "background-color": "#555555", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Home Card View" + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "custom": { + "buttonid": "status_filters/orderby" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Order-By" + }, + "position": { + "basis": "36px" + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.alarm_filter.orderby" + }, + "type": "property" + } + } + }, + "props": { + "checkedIcon": { + "color": { + "disabled": "#FFFFFF", + "enabled": "#FFFFFF" + } + }, + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontSize": 12, + "fontWeight": "bold", + "marginLeft": 10, + "marginRight": 10 + }, + "text": "Order Cards By Area" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.viewFocus" + }, + "transforms": [ + { + "code": "#\tvalue \u003d value.split(\u0027/\u0027)\n#\tvalue \u003d value.pop()\n\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": 65, + "grow": 1 + }, + "props": { + "direction": "column", + "justify": "space-between" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Accessibility" + }, + "position": { + "basis": "200px", + "shrink": 0 + }, + "props": { + "direction": "column", + "style": { + "borderColor": "#FFFFFF", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/resource.json new file mode 100644 index 0000000..49a7bcb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "be6333cced98fa701c03e7fa4ad47295994be743f5265dd96a37963fd42865e0" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/thumbnail.png new file mode 100644 index 0000000..748c252 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/view.json new file mode 100644 index 0000000..d00b2ad --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/view.json @@ -0,0 +1,447 @@ +{ + "custom": {}, + "params": { + "tagProps": [ + "", + "", + "PLC", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 148, + "width": 362 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "NAME" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "205px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "/root.custom.name" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "PRIORITY" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Priority" + }, + "position": { + "basis": "205px" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "{/root.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": "Alarms-Styles/Critical" + }, + { + "input": 3, + "output": "Alarms-Styles/High" + }, + { + "input": 2, + "output": "Alarms-Styles/Medium" + }, + { + "input": 1, + "output": "Alarms-Styles/Low" + }, + { + "input": 0, + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "/root.custom.priority" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": "Critical" + }, + { + "input": 3, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 1, + "output": "Low" + }, + { + "input": 0, + "output": "Warning" + }, + { + "input": 5, + "output": "No active alarms" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "left" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Priority" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "TIMESTAMP" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "100px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceName" + }, + "position": { + "basis": "205px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "/root.custom.timestamp" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "EventTime" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Spacer1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "DURATION" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer" + }, + "position": { + "basis": "91px" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Spacer_0" + }, + "position": { + "basis": "199px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "/root.custom.duration" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "EventTime_0" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel" + } + }, + "type": "ia.container.flex" + } + ], + "custom": { + "delay": 2000, + "duration": "", + "enable": true, + "name": "", + "priority": "", + "timestamp": "" + }, + "meta": { + "name": "root" + }, + "propConfig": { + "custom.active_bit": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "1": "{view.params.tagProps[1]}" + }, + "tagPath": "{0}/Alarms/{1}.IsActive" + }, + "type": "tag" + } + }, + "custom.shelved_bit": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "1": "{view.params.tagProps[1]}" + }, + "tagPath": "{0}/Alarms/{1}.IsShelved" + }, + "type": "tag" + } + }, + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.enable:\n\t\t\n\t\timport time\n\t\t\n\t\tdef convert(millis):\n\t\t\tmillis \u003d int(millis)\n\t\t\tseconds\u003d(millis/1000)%60\n\t\t\tseconds \u003d int(seconds)\n\t\t\tminutes\u003d(millis/(1000*60))%60\n\t\t\tminutes \u003d int(minutes)\n\t\t\thours\u003d(millis/(1000*60*60))\n\t\t\treturn(\"%d:%d:%d\" % (hours, minutes, seconds))\n\t\t\n\t\tdef update_custom_properties(name, timestamp, duration, priority):\n\t\t\tself.custom.name \u003d name\n\t\t\tself.custom.timestamp \u003d timestamp\n\t\t\tself.custom.duration \u003d duration\n\t\t\tself.custom.priority \u003d priority\n\t\t\n\t\tdef get_alarms():\n\t\t\talarm_dict \u003d system.tag.readBlocking(\"System/ActiveAlarms\")\n\t\t\talarms_decoded \u003d system.util.jsonDecode(alarm_dict[0].value)\n\t\t\treturn alarms_decoded\n\t\t\t\n\t\tdef get_tag_config():\n\t\t\tname \u003d\"\"\n\t\t\tpath \u003d self.view.params.tagProps[0]\n\t\t\tif system.tag.exists(path) and path !\u003d \"\":\n\t\t\t\ttag_config \u003d system.tag.getConfiguration(path)[0]\n\t\t\t\talarms \u003d tag_config.get(\"alarms\")\n\t\t\t\tfor alarm in alarms:\n\t\t\t\t\tif alarm.get(\"name\") \u003d\u003d self.view.params.tagProps[1]:\n\t\t\t\t\t\tname \u003d alarm.get(\"AdditionalInfo\")\n\t\t\t\t\t\tbreak\n\t\t\t\ttimestamp \u003d \"N/A\"\n\t\t\t\tduration \u003d \"N/A\"\n\t\t\t\tpriority \u003d 5\n\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\t\n\t\tdef get_active_alarm():\n\t\t\ttagPath \u003d self.view.params.tagProps[0]\n\t\t\tprops_alarm_name \u003d str(self.view.params.tagProps[1])\n\t\t\ttag_display_path \u003d tagPath + \"/\" + props_alarm_name\n\t\t\talarms \u003d get_alarms()\n\t\t\tfor i in alarms:\n\t\t\t\tdisplaypath \u003d alarms[i].get(\"DisplayPath\")\n\t\t\t\talarm_name \u003d alarms[i].get(\"Name\")\n\t\t\t\tsystem.perspective.print(displaypath)\n\t\t\t\tif tag_display_path \u003d\u003d displaypath:\n\t\t\t\t\tname \u003d alarms[i].get(\"AddInfo\")\n\t\t\t\t\ttimestamp \u003d alarms[i].get(\"TimeStamp\")\n\t\t\t\t\tduration \u003d alarms[i].get(\"Duration\")\n\t\t\t\t\tduration \u003d convert(duration)\n\t\t\t\t\tpriority \u003d alarms[i].get(\"Priority\")\n\t\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\tbreak\n\t\t\t\t\t\n\t\tif self.custom.active_bit and not self.custom.shelved_bit:\n\t\t\tget_active_alarm()\n\t\t\t\n\t\telse:\n\t\t\talarms \u003d get_tag_config()" + } + } + }, + "props": { + "direction": "column", + "style": { + "borderRadius": "10x", + "borderStyle": "solid", + "classes": "PopUp-Styles/Information-Device" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/resource.json new file mode 100644 index 0000000..a3da561 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "f88017e536c6dbb649689c07e9f8f98af2f3840d59b40fe1ef7bc717b3e0e1c4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/thumbnail.png new file mode 100644 index 0000000..e9a8b4b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/view.json new file mode 100644 index 0000000..e027654 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/view.json @@ -0,0 +1,1004 @@ +{ + "custom": {}, + "params": { + "btnActionClose": "closePopup", + "btnActionPrimary": "closePopup", + "btnActionSecondary": "closePopup", + "btnIconAlignment": "left", + "btnIconPrimary": "chevron_right", + "btnIconSecondary": "", + "btnTextPrimary": "Primary", + "btnTextSecondary": "Secondary", + "editField1": "editField", + "editField2": "", + "editField3": "", + "field1Description": "Description goes here.", + "field2Description": "Description goes here.", + "field3Description": "Description goes here.", + "key": "value", + "message": "Message goes here.", + "path": "", + "payload": { + "key": "The payload to return to the caller would go here. DLC 2021-09-23" + }, + "showCloseBtn": true, + "state": "info", + "title": "title", + "userRole": true + }, + "propConfig": { + "params.btnActionClose": { + "paramDirection": "input", + "persistent": true + }, + "params.btnActionPrimary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnActionSecondary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconAlignment": { + "paramDirection": "inout" + }, + "params.btnIconPrimary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconSecondary": { + "paramDirection": "inout", + "persistent": true + }, + "params.btnIconSecondary_1": { + "paramDirection": "input", + "persistent": true + }, + "params.btnIconSecondary_2": { + "paramDirection": "input", + "persistent": true + }, + "params.btnIconSecondary_3": { + "paramDirection": "input", + "persistent": true + }, + "params.btnTextPrimary": { + "paramDirection": "inout" + }, + "params.btnTextSecondary": { + "paramDirection": "inout" + }, + "params.buttons.key": { + "paramDirection": "input", + "persistent": true + }, + "params.editField1": { + "paramDirection": "input", + "persistent": true + }, + "params.editField2": { + "paramDirection": "input", + "persistent": true + }, + "params.editField3": { + "paramDirection": "input", + "persistent": true + }, + "params.field1Description": { + "paramDirection": "input", + "persistent": true + }, + "params.field2Description": { + "paramDirection": "input", + "persistent": true + }, + "params.field3Description": { + "paramDirection": "input", + "persistent": true + }, + "params.key": { + "paramDirection": "input", + "persistent": true + }, + "params.message": { + "paramDirection": "input", + "persistent": true + }, + "params.path": { + "paramDirection": "input", + "persistent": true + }, + "params.payload": { + "paramDirection": "input", + "persistent": true + }, + "params.showCloseBtn": { + "paramDirection": "input", + "persistent": true + }, + "params.state": { + "paramDirection": "input", + "persistent": true + }, + "params.title": { + "paramDirection": "input", + "persistent": true + }, + "params.userRole": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\tif any(item \u003d\u003d \"eurme-ignition-admins\" for item in value):\n\t\treturn True\n\telse:\n\t\treturn False\n\t\t\n", + "type": "script" + } + ], + "type": "property" + }, + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 675, + "width": 858 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "iconMain" + }, + "position": { + "basis": "32px", + "display": false, + "shrink": 0 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "warning", + "output": "var(--warning)" + }, + { + "input": "success", + "output": "var(--success)" + }, + { + "input": "error", + "output": "var(--error)" + }, + { + "input": "info", + "output": "var(--info)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "material/info", + "inputType": "scalar", + "mappings": [ + { + "input": "warning", + "output": "material/warning" + }, + { + "input": "info", + "output": "material/info" + }, + { + "input": "error", + "output": "material/error" + }, + { + "input": "success", + "output": "material/check_circle" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "title" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{this.props.text}" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.style.color": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "var(--info)" + }, + { + "input": "success", + "output": "var(--success)" + }, + { + "input": "error", + "output": "var(--error)" + }, + { + "input": "warning", + "output": "var(--warning)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertTitle", + "color": "#FFFFFF" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "message" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.message" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertMessage" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BreakpointContainer_0" + }, + "position": { + "basis": "20px" + }, + "type": "ia.container.breakpt" + }, + { + "meta": { + "name": "message_0" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.field1Description" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertMessage" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Field1" + }, + "position": { + "basis": "30px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.editField1" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "textAlign": "start" + } + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "BreakpointContainer_1" + }, + "position": { + "basis": "20px" + }, + "type": "ia.container.breakpt" + }, + { + "meta": { + "name": "message_1" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.field2Description" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertMessage" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Field2" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.editField2" + }, + "type": "property" + } + } + }, + "props": { + "resize": "both" + }, + "type": "ia.input.text-area" + }, + { + "meta": { + "name": "BreakpointContainer" + }, + "position": { + "basis": "20px" + }, + "type": "ia.container.breakpt" + }, + { + "meta": { + "name": "message_2" + }, + "position": { + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.field3Description" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertMessage" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Field3" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.editField3" + }, + "type": "property" + } + } + }, + "props": { + "resize": "both" + }, + "type": "ia.input.text-area" + } + ], + "meta": { + "name": "content" + }, + "position": { + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionClose\t\n\tsystem.perspective.sendMessage(messageType, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + }, + "onTouchStart": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionClose\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "iconClose" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.showCloseBtn" + }, + "type": "property" + } + } + }, + "props": { + "path": "material/close", + "style": { + "classes": "Alerts/alertClose" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "body" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "props": { + "alignItems": "flex-start", + "justify": "center", + "style": { + "boxSizing": "content-box", + "classes": "Utilities/p-16" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tmessageType \u003d self.view.params.btnActionSecondary\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "actionSecondary" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.image.icon.path": { + "binding": { + "config": { + "expression": "\"material/\" + {view.params.btnIconSecondary}" + }, + "transforms": [ + { + "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.image.position": { + "binding": { + "config": { + "path": "view.params.btnIconAlignment" + }, + "type": "property" + } + }, + "props.image.style.fill": { + "binding": { + "config": { + "path": "view.params.state" + }, + "transforms": [ + { + "fallback": "#222222", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "#17599C" + }, + { + "input": "success", + "output": "#117539" + }, + { + "input": "warning", + "output": "#C26700" + }, + { + "input": "error", + "output": "#A62D19" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "Alerts/alertBtn2 Utilities/m-r-8 Utilities/p-rl-8", + "inputType": "scalar", + "mappings": [ + { + "input": "error", + "output": "Alerts/states/errorBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "warning", + "output": "Alerts/states/warningBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "info", + "output": "Alerts/states/infoBtn2 Utilities/m-r-8 Utilities/p-rl-8" + }, + { + "input": "success", + "output": "Alerts/states/successBtn2 Utilities/m-r-8 Utilities/p-rl-8" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "expression": "{view.params.btnTextSecondary}" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 20, + "icon": {}, + "width": 20 + }, + "primary": false, + "style": { + "classes": "Alerts/alertButtonSecondary", + "margin": "5px", + "marginRight": "30px" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t#############################################################################################\n\t# Purpose:\tSubmits Current form data to the selected destination from the parameters.\t\t#\n\t#\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#\n\t# Login: \t\t\tDate:\t\t\t\t#Comment:\t\t\t\t\t\t\t\tVersion:\t# \n\t# dmamani\t\t\t1/4/23\t\t\t\tRelease to Production\t\t\t\t\tV1\t\t\t#\n\t# \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#\n\t#############################################################################################\n\timport os\n\timport boto3\n\tfrom pprint import pprint, pformat\n\tfrom SymbolLibrary import fetch_library, list_backups, write_library, update_symbol_library, rollback\n\t\n\tsystem.perspective.print(self.session.props.auth.user.roles)\n\t\n\tif not self.view.params.userRole: \n\t\tmsg \u003d \"Contact MAP Team\tCTI: Distribution Center \u003e Maintenance Automation Platform \u003e SCADA Issue\" \n\t\tself.show_error_dialog(msg)\n\t\tsystem.perspective.closePopup(\u0027editItem\u0027)\n\t\treturn\n\n\tsymbolpath \u003d self.view.params.path\n\tcurrentuser \u003d self.session.props.auth.user.id\n\tcurrentcategory \u003d self.view.params.editField1\n\tcurrentinfo \u003d self.view.params.editField2\n\tcurrentdesc \u003d self.view.params.editField3\n\n\tresp \u003d update_symbol_library(symbolpath, category\u003dcurrentcategory, info\u003dcurrentinfo, description\u003dcurrentdesc, username\u003dcurrentuser)\n\tmsg \u003d pformat(resp)\n\t\n\tself.show_success_dialog(msg)\n\tsystem.perspective.print(msg)\n\tsystem.perspective.print(fetch_library(username\u003dcurrentuser))\n\tsystem.perspective.print(symbolpath)\n\tsystem.perspective.print(self.session.props.auth.user.id)\n\t\n\tsystem.perspective.sendMessage(\"UserClickRefresh\", scope \u003d \"page\")\n\tsystem.perspective.closePopup(\u0027editItem\u0027)\n" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "actionPrimary" + }, + "position": { + "basis": "109px", + "shrink": 0 + }, + "propConfig": { + "props.image.icon.path": { + "binding": { + "config": { + "expression": "\"material/\" + {view.params.btnIconPrimary}" + }, + "transforms": [ + { + "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.image.position": { + "binding": { + "config": { + "path": "view.params.btnIconAlignment" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "Alerts/alertBtn1 Utilities/p-rl-8", + "inputType": "scalar", + "mappings": [ + { + "input": "error", + "output": "Alerts/states/errorBtn1 Utilities/p-rl-8" + }, + { + "input": "warning", + "output": "Alerts/states/warningBtn1 Utilities/p-rl-8" + }, + { + "input": "info", + "output": "Alerts/states/infoBtn1 Utilities/p-rl-8" + }, + { + "input": "success", + "output": "Alerts/states/successBtn1 Utilities/p-rl-8" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.btnTextPrimary" + }, + "type": "property" + } + } + }, + "props": { + "image": { + "height": 20, + "icon": {}, + "style": { + "margin": 5 + }, + "width": 20 + }, + "style": { + "classes": "Alerts/alertButton", + "margin": "5px" + }, + "textStyle": { + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [ + { + "name": "show_success_dialog", + "params": [ + "msg\u003dNone" + ], + "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"Update Symbol Library Results\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t\t" + }, + { + "name": "show_error_dialog", + "params": [ + "msg\u003dNone" + ], + "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"Not Authorized\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t\t" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "closePopup", + "pageScope": false, + "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", + "sessionScope": true, + "viewScope": false + }, + { + "messageType": "logout", + "pageScope": false, + "script": "\tsystem.perspective.logout()", + "sessionScope": true, + "viewScope": false + } + ] + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "footer" + }, + "position": { + "basis": "56px", + "shrink": 0 + }, + "props": { + "justify": "flex-end", + "style": { + "backgroundColor": "var(--neutral-30)", + "borderTop": "1px solid var(--neutral-50)", + "classes": "Utilities/p-8" + } + }, + "type": "ia.container.flex" + } + ], + "events": { + "dom": { + "onFocus": { + "config": { + "script": "\tmessageType \u003d \u0027alertFocus\u0027\n\tsystem.perspective.sendMessage(messageType)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "dialog" + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "expression": "{view.params.state}" + }, + "transforms": [ + { + "fallback": "Alerts/alertDefault", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "Alerts/states/info" + }, + { + "input": "warning", + "output": "Alerts/states/warning" + }, + { + "input": "error", + "output": "Alerts/states/error" + }, + { + "input": "success", + "output": "Alerts/states/success" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "maxHeight": "none" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/resource.json new file mode 100644 index 0000000..023e5b8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "33e52f74be3b833b0bc9028ba2ec6951ea22eb3136c3af055dbdb2fdb2774330" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/thumbnail.png new file mode 100644 index 0000000..7748339 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/view.json new file mode 100644 index 0000000..e5619d2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/view.json @@ -0,0 +1,97 @@ +{ + "custom": {}, + "params": { + "Error_message": "none" + }, + "propConfig": { + "params.Error_message": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 242 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "200px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/error_outline", + "style": { + "backgroundColor": "#555555" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "250px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.Error_message" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#000000" + }, + "textStyle": { + "color": "#FFFFFF", + "fontWeight": "bold", + "margin": 10, + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "direction": "column", + "style": { + "borderColor": "#FFFFFF", + "borderStyle": "solid", + "borderWidth": "1px" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Error" + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/resource.json new file mode 100644 index 0000000..0d68ae0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "6b6ded625e57c95be10ed695c8568a80cc5fcf853fead2460fa3977547fb9408" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/thumbnail.png new file mode 100644 index 0000000..94ae117 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/view.json new file mode 100644 index 0000000..79af848 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/view.json @@ -0,0 +1,1201 @@ +{ + "custom": { + "data": "value" + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Device-Views\"\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\t\t\n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\tjson_structure \u003d []\n\tfor view in filtered_views:\n\t\t\n\t\tif \u0027Test\u0027 not in view[\u0027path\u0027]:\n\t\t\tinstance \u003d {\n\t\t\t\t\"instanceStyle\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t},\n\t\t\t\t\"instancePosition\": {},\n\t\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\t\"forceRunning\":3,\n\t\t\t\t\"forceFault\": None,\n\t\t\t\t\"has_state\":True\n\t\t\t}\n\t\t\tjson_structure.append(instance)\n\t\t\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.params.Dataset \u003d filtered_views\n\tself.params.FilteredViews \u003d json_structure\n\tself.session.custom.alarm_filter.show_running \u003d True\n\tself.session.custom.alarm_filter.show_safety \u003d True\n\tself.session.custom.alarm_filter.show_diagnostic \u003d True\n\tself.session.custom.alarm_filter.show_gateways \u003d True\n\tself.session.custom.alarm_filter.show_low_alarm \u003d True\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "Dataset": [ + { + "path": "Symbol-Views/Equipment-Views/ARSAW" + }, + { + "path": "Symbol-Views/Equipment-Views/AUS" + }, + { + "path": "Symbol-Views/Equipment-Views/Button" + }, + { + "path": "Symbol-Views/Equipment-Views/Camera" + }, + { + "path": "Symbol-Views/Equipment-Views/CognexCamera" + }, + { + "path": "Symbol-Views/Equipment-Views/ControlCabinet" + }, + { + "path": "Symbol-Views/Equipment-Views/Divert_Arm" + }, + { + "path": "Symbol-Views/Equipment-Views/Estop" + }, + { + "path": "Symbol-Views/Equipment-Views/GoodsLift" + }, + { + "path": "Symbol-Views/Equipment-Views/JAM" + }, + { + "path": "Symbol-Views/Equipment-Views/JR_Button" + }, + { + "path": "Symbol-Views/Equipment-Views/Kobukuro" + }, + { + "path": "Symbol-Views/Equipment-Views/Lift" + }, + { + "path": "Symbol-Views/Equipment-Views/Light_Curtain" + }, + { + "path": "Symbol-Views/Equipment-Views/Main_Panel" + }, + { + "path": "Symbol-Views/Equipment-Views/Network" + }, + { + "path": "Symbol-Views/Equipment-Views/PPI" + }, + { + "path": "Symbol-Views/Equipment-Views/Photocell2_Lift" + }, + { + "path": "Symbol-Views/Equipment-Views/Photocell_Lift" + }, + { + "path": "Symbol-Views/Equipment-Views/PinDetection" + }, + { + "path": "Symbol-Views/Equipment-Views/Pointer" + }, + { + "path": "Symbol-Views/Equipment-Views/PressureSwitch" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_End" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" + }, + { + "path": "Symbol-Views/Equipment-Views/RFID" + }, + { + "path": "Symbol-Views/Equipment-Views/Robot" + }, + { + "path": "Symbol-Views/Equipment-Views/SLAMs" + }, + { + "path": "Symbol-Views/Equipment-Views/SS_Button" + }, + { + "path": "Symbol-Views/Equipment-Views/SafetyGate" + }, + { + "path": "Symbol-Views/Equipment-Views/SmartPac" + }, + { + "path": "Symbol-Views/Equipment-Views/Spiral" + }, + { + "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" + }, + { + "path": "Symbol-Views/Equipment-Views/Status" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/Status_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/THEA" + }, + { + "path": "Symbol-Views/Equipment-Views/Test" + } + ], + "FilteredViews": [ + { + "Path": "Symbol-Views/Equipment-Views/ARSAW", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/AUS", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Button", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Camera", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/CognexCamera", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/ControlCabinet", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Divert_Arm", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Estop", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/GoodsLift", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/JAM", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/JR_Button", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Kobukuro", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Lift", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Light_Curtain", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Main_Panel", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Network", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PPI", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Photocell2_Lift", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Photocell_Lift", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PinDetection", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Pointer", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PressureSwitch", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_End", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_Line", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/RFID", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Robot", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SLAMs", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SS_Button", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SafetyGate", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SmartPac", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Spiral", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Stacker_Destacker", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Status", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Status_NS", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/THEA", + "forceFault": null, + "forceRunning": 3, + "has_state": true, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + } + ] + }, + "propConfig": { + "custom.data": { + "persistent": true + }, + "params.Dataset": { + "paramDirection": "output" + }, + "params.FilteredViews": { + "paramDirection": "output" + } + }, + "props": { + "defaultSize": { + "height": 309, + "width": 378 + }, + "theme": "dark" + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Table" + }, + "propConfig": { + "props.data[11].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state5" + }, + "type": "property" + } + }, + "props.data[11].Color.style.color": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) " + }, + "type": "expr" + } + }, + "props.data[12].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state4" + }, + "type": "property" + } + }, + "props.data[13].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state3" + }, + "type": "property" + } + }, + "props.data[14].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state2" + }, + "type": "property" + } + }, + "props.data[15].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state1" + }, + "type": "property" + } + }, + "props.data[1].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state0" + }, + "type": "property" + } + }, + "props.data[3].Color.style.backgroundColor": { + "binding": { + "config": { + "path": "session.custom.colours.state5" + }, + "type": "property" + } + }, + "props.data[3].Color.style.color": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) " + }, + "type": "expr" + } + } + }, + "props": { + "cells": { + "style": { + "paddingLeft": 5 + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Color", + "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": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": false, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "borderLeftStyle": "solid", + "borderLeftWidth": 1, + "borderRightStyle": "solid", + "borderRightWidth": 1, + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + } + ], + "data": [ + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "", + "borderBottomStyle": "solid", + "borderBottomWidth": 1, + "borderLeftStyle": "hidden", + "borderRightStyle": "hidden", + "classes": "", + "font-weight": "bold" + }, + "value": "State" + }, + "Description": { + "align": "center", + "editable": false, + "justify": "left", + "style": { + "backgroundColor": "", + "borderBottomStyle": "solid", + "borderBottomWidth": 1, + "borderLeftStyle": "hidden", + "classes": "some-class", + "font-weight": "bold" + }, + "value": "Description" + } + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "", + "color": "#000000" + }, + "value": "Stopped" + }, + "Description": "MHE is Stopped/Disabled\n" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#c9fcc0", + "classes": "", + "color": "#000000" + }, + "value": "Enabled" + }, + "Description": "MHE is Enabled (Not Running)" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "value": "Running" + }, + "Description": "MHE is Running" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#00ffd0", + "classes": "", + "color": "#000000" + }, + "value": "Power Saving" + }, + "Description": "MHE is in Power Saving Mode" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#ff8c00", + "classes": "", + "color": "#000000" + }, + "value": "Jammed" + }, + "Description": "MHE is Jammed" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#0008ff", + "classes": "", + "color": "#FFFFFF" + }, + "value": "Full" + }, + "Description": "MHE is Full" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#946446", + "classes": "", + "color": "#FFFFFF" + }, + "value": "Maint Mode" + }, + "Description": "MHE is in Maintenance Mode" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#B45C5C", + "classes": "", + "color": "#FFFFFF" + }, + "value": "Maint Running Mode" + }, + "Description": "MHE Running in Maintenance Mode" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#ff0000", + "classes": "", + "color": "#FFFFFF" + }, + "value": "Estop / Faulted\n" + }, + "Description": "MHE is Estopped / Faulted\n" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "", + "borderBottomStyle": "solid", + "borderBottomWidth": 1, + "borderLeftStyle": "hidden", + "borderRightStyle": "hidden", + "borderTopStyle": "solid", + "borderTopWidth": 1, + "classes": "", + "font-weight": "bold" + }, + "value": "Priority" + }, + "Description": { + "align": "center", + "editable": false, + "justify": "left", + "style": { + "backgroundColor": "", + "borderBottomStyle": "solid", + "borderBottomWidth": 1, + "borderLeftStyle": "hidden", + "borderTopStyle": "solid", + "borderTopWidth": 1, + "classes": "", + "font-weight": "bold" + }, + "value": "Description" + } + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "value": "Healthy" + }, + "Description": "Healthy, no active alarms" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "", + "color": "#000000" + }, + "value": "Diagnostic" + }, + "Description": "Diagnostic Information" + }, + { + "Color": { + "align": "center", + "borderLeftColor": "white", + "justify": "left", + "style": { + "classes": "", + "color": "#000000" + }, + "value": "Low" + }, + "Description": "Running at reduced capacity", + "Status": "Low" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "value": "Medium" + }, + "Description": "Controlled Stop" + }, + { + "Color": { + "align": "center", + "justify": "left", + "style": { + "classes": "some-class" + }, + "value": "High" + }, + "Description": "Uncontrolled Stop" + } + ], + "dragOrderable": false, + "enableHeader": false, + "headerStyle": { + "backgroundColor": "#2B2B2B", + "color": "#FFFFFF", + "textIndent": "0px" + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "color": "#FFFFFF", + "enabled": false + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "selection": { + "enableRowSelection": false, + "style": { + "fontWeight": "bold" + } + } + }, + "type": "ia.display.table" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "320px" + }, + "propConfig": { + "props.params.Dataset": { + "binding": { + "config": { + "path": "view.params.Dataset" + }, + "type": "property" + } + }, + "props.params.FilteredViews": { + "binding": { + "config": { + "path": "view.params.FilteredViews" + }, + "type": "property" + } + } + }, + "props": { + "path": "PopUp-Views/Legend_Popup/Legend-table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer_6" + }, + "position": { + "basis": "800px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "tabIndex": 1 + }, + "props": { + "direction": "column", + "style": { + "overflow": "visible" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "basis": "1377px" + }, + "propConfig": { + "props.tabs[0]": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired}\u003dTrue, \u0027Alt Color\u0027, \u0027Color\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "menuStyle": { + "fontWeight": "bold" + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "tabs": [ + null, + "Icons" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#3B3B3B", + "opacity": 1 + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/resource.json new file mode 100644 index 0000000..e77780d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8896826c95bfa71318241f2757363c48803a05da32a0c1b088a5e3e67f2a29eb" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/thumbnail.png new file mode 100644 index 0000000..f2e1098 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/view.json new file mode 100644 index 0000000..855523d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/view.json @@ -0,0 +1,204 @@ +{ + "custom": {}, + "params": { + "Name": "", + "Path": "", + "forceFault": null, + "forceRunning": null + }, + "propConfig": { + "params.Name": { + "binding": { + "config": { + "path": "view.params.Path" + }, + "transforms": [ + { + "code": "\tstring \u003d value \n\tparts \u003d string.split(\"/\")\n\td \u003d parts[-1]\n\treturn d\n\treturn value", + "type": "script" + } + ], + "type": "property" + }, + "paramDirection": "inout", + "persistent": true + }, + "params.Path": { + "paramDirection": "inout", + "persistent": true + }, + "params.forceFault": { + "paramDirection": "inout", + "persistent": true + }, + "params.forceRunning": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 44, + "width": 357 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": 35 + }, + "propConfig": { + "props.params.forceFaultStatus": { + "binding": { + "config": { + "path": "view.params.forceFault" + }, + "type": "property" + } + }, + "props.params.forceRunningStatus": { + "binding": { + "config": { + "path": "view.params.forceRunning" + }, + "type": "property" + } + }, + "props.params.tagProps[0]": { + "binding": { + "config": { + "path": "view.params.Name" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.Path" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "directionLeft": false, + "tagProps": [ + null, + "", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "style": { + "overflow": "hidden", + "pointerEvents": "None" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "88px", + "shrink": 0 + }, + "props": { + "style": { + "overflow": "hidden", + "paddingLeft": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.Name" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 5 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "45px", + "shrink": 0 + }, + "props": { + "style": { + "backgroundColor": "#3B3B3B", + "borderColor": "#CAC3C3", + "borderStyle": "solid", + "borderWidth": 1, + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/resource.json new file mode 100644 index 0000000..b35c3a3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "ed60c239259fcd195015c4a566bcf9e6edb9a1df54595a9f199390174e134ffc" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/thumbnail.png new file mode 100644 index 0000000..8aaa1e2 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/view.json new file mode 100644 index 0000000..00c9572 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/view.json @@ -0,0 +1,387 @@ +{ + "custom": {}, + "params": { + "Dataset": [ + { + "path": "Symbol-Views/Device-Views/Estop" + }, + { + "path": "Symbol-Views/Equipment-Views/ARSAW" + }, + { + "path": "Symbol-Views/Equipment-Views/AUS" + }, + { + "path": "Symbol-Views/Equipment-Views/Camera" + }, + { + "path": "Symbol-Views/Equipment-Views/ControlCabinet" + }, + { + "path": "Symbol-Views/Equipment-Views/Estop" + }, + { + "path": "Symbol-Views/Equipment-Views/GoodsLift" + }, + { + "path": "Symbol-Views/Equipment-Views/JAM" + }, + { + "path": "Symbol-Views/Equipment-Views/Light_Curtain" + }, + { + "path": "Symbol-Views/Equipment-Views/Main_Panel" + }, + { + "path": "Symbol-Views/Equipment-Views/Network" + }, + { + "path": "Symbol-Views/Equipment-Views/Pointer" + }, + { + "path": "Symbol-Views/Equipment-Views/PressureSwitch" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_End" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" + }, + { + "path": "Symbol-Views/Equipment-Views/RFID" + }, + { + "path": "Symbol-Views/Equipment-Views/Robot" + }, + { + "path": "Symbol-Views/Equipment-Views/SLAMs" + }, + { + "path": "Symbol-Views/Equipment-Views/SafetyGate" + }, + { + "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" + }, + { + "path": "Symbol-Views/Equipment-Views/Status" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/Status_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/THEA" + }, + { + "path": "Symbol-Views/Equipment-Views/Test" + } + ], + "FilteredViews": [ + { + "Path": "Symbol-Views/Equipment-Views/ARSAW", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/AUS", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Camera", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/ControlCabinet", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Estop", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/GoodsLift", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/JAM", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Light_Curtain", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Main_Panel", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Network", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Pointer", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PressureSwitch", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_End", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_Line", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/RFID", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Robot", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SLAMs", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/SafetyGate", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Stacker_Destacker", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Status", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Status_NS", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/THEA", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Path": "Symbol-Views/Equipment-Views/Test", + "forceFault": null, + "forceRunning": 3, + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + } + ] + }, + "propConfig": { + "params.Dataset": { + "paramDirection": "input" + }, + "params.FilteredViews": { + "paramDirection": "input" + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 386 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "320px" + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "path": "view.params.FilteredViews" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column", + "path": "PopUp-Views/Legend_Popup/Legend-row", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/resource.json new file mode 100644 index 0000000..b48d1e2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "33f8005bf3b432c192bb83ddebcf3e6d3ed3d9848a91dd6ee53ef26925091721" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/thumbnail.png new file mode 100644 index 0000000..c71a51c Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/view.json new file mode 100644 index 0000000..6070270 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/view.json @@ -0,0 +1,522 @@ +{ + "custom": {}, + "params": { + "body": "", + "link1": "", + "link1title": "", + "link2": "", + "link2title": "", + "priority": "", + "title": "" + }, + "propConfig": { + "params.body": { + "paramDirection": "inout", + "persistent": true + }, + "params.link1": { + "paramDirection": "inout", + "persistent": true + }, + "params.link1title": { + "paramDirection": "inout", + "persistent": true + }, + "params.link2": { + "paramDirection": "inout", + "persistent": true + }, + "params.link2title": { + "paramDirection": "inout", + "persistent": true + }, + "params.priority": { + "paramDirection": "inout", + "persistent": true + }, + "params.title": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 227, + "width": 600 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "title" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{this.props.text}" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.style.color": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "var(--info)" + }, + { + "input": "success", + "output": "var(--success)" + }, + { + "input": "error", + "output": "var(--error)" + }, + { + "input": "warning", + "output": "var(--warning)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertTitle", + "color": "#FFFFFF", + "marginLeft": 5 + }, + "textStyle": { + "paddingLeft": 5, + "paddingRight": 5 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "TopRow" + }, + "position": { + "basis": "40px" + }, + "props": { + "style": { + "backgroundColor": "#555555" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Body-Label" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.body" + }, + "type": "property" + } + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "BodyRow" + }, + "position": { + "basis": "90px", + "grow": 1 + }, + "props": { + "style": { + "marginBottom": 2.5, + "marginLeft": 10, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tlink \u003d self.view.params.link1\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.link1" + }, + "type": "property" + } + } + }, + "props": { + "path": "material/open_in_new", + "style": { + "marginLeft": 10, + "marginRight": 10 + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tlink \u003d self.view.params.link1\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Link1-Label", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.link1" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.link1title" + }, + "type": "property" + } + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "URL1Row" + }, + "position": { + "basis": "40px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.link1title" + }, + "transforms": [ + { + "code": "\tif len(value)\u003e0:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#555555", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tlink \u003d self.view.params.link2\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.link2" + }, + "type": "property" + } + } + }, + "props": { + "path": "material/open_in_new", + "style": { + "marginLeft": 10, + "marginRight": 10 + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tlink \u003d self.view.params.link2\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Link2-Label", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.link2" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.link2title" + }, + "type": "property" + } + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "URL2Row" + }, + "position": { + "basis": "40px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "path": "view.params.link2title" + }, + "transforms": [ + { + "code": "\tif len(value)\u003e0:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#555555" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "content" + }, + "position": { + "basis": "500px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "body" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "alignItems": "flex-start", + "justify": "center", + "style": { + "boxSizing": "content-box", + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.borderLeftColor": { + "binding": { + "config": { + "path": "view.params.priority" + }, + "transforms": [ + { + "fallback": "state5", + "inputType": "scalar", + "mappings": [ + { + "input": "Healthy", + "output": "state5" + }, + { + "input": "Diagnostic", + "output": "state4" + }, + { + "input": "Low", + "output": "state3" + }, + { + "input": "Medium", + "output": "state2" + }, + { + "input": "High", + "output": "state1" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "code": "\tprefix \u003d self.session.custom.colours[value]\n\treturn prefix", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderLeftStyle": "solid", + "borderLeftWidth": 5, + "borderRightStyle": "none", + "borderTopStyle": "none", + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/resource.json new file mode 100644 index 0000000..8fc49b0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "a2f3e62ab39058a29d7d2de84be2fd07265c9f85eac7b87bc1bb0c25c7d750d5" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/thumbnail.png new file mode 100644 index 0000000..75a0393 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/view.json new file mode 100644 index 0000000..e539819 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/view.json @@ -0,0 +1,176 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "notifyToolPopup", + "start_time": { + "$": [ + "ts", + 192, + 1715013953223 + ], + "$ts": 1715013953223 + } + } + }, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "entryCount": "", + "instances": [] + }, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": " if value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n return self.custom.activityLogger.alt_pageid.lower()\n else:\n return value[1:].lower()\n\treturn value", + "type": "script" + } + ], + "type": "property" + } + }, + "params.entryCount": { + "paramDirection": "input", + "persistent": true + }, + "params.instances": { + "paramDirection": "input", + "persistent": true + }, + "props.defaultSize.height": { + "binding": { + "config": { + "path": "view.params.entryCount" + }, + "transforms": [ + { + "fallback": 475, + "inputType": "range", + "mappings": [ + { + "input": { + "max": 1, + "min": 0 + }, + "output": 227 + }, + { + "input": { + "max": 2, + "min": 2 + }, + "output": 456 + }, + { + "input": { + "max": 99, + "min": 3 + }, + "output": 475 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.defaultSize.width": { + "binding": { + "config": { + "path": "view.params.entryCount" + }, + "transforms": [ + { + "fallback": 620, + "inputType": "range", + "mappings": [ + { + "input": { + "max": 2, + "min": 0 + }, + "output": 600 + }, + { + "input": { + "max": 99, + "min": 3 + }, + "output": 620 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "defaultSize": {} + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "path": "view.params.instances" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column", + "path": "PopUp-Views/Notify-Tool/Notify-Popup-Entry" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/resource.json new file mode 100644 index 0000000..5fc8d41 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "0018379ac7e8e25d3cacfe1b2f80854c97366dc1c5f683a6c52455863eda37ef" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/thumbnail.png new file mode 100644 index 0000000..6588049 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/view.json new file mode 100644 index 0000000..7497e54 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/view.json @@ -0,0 +1,396 @@ +{ + "custom": {}, + "params": { + "body": "", + "link1": "", + "link1title": "", + "link2": "", + "link2title": "", + "title": "" + }, + "propConfig": { + "params.body": { + "paramDirection": "inout", + "persistent": true + }, + "params.link1": { + "paramDirection": "inout", + "persistent": true + }, + "params.link1title": { + "paramDirection": "inout", + "persistent": true + }, + "params.link2": { + "paramDirection": "inout", + "persistent": true + }, + "params.link2title": { + "paramDirection": "inout", + "persistent": true + }, + "params.title": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 310, + "width": 600 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "title" + }, + "position": { + "basis": "50px", + "grow": 1, + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{this.props.text}" + }, + "transforms": [ + { + "fallback": true, + "inputType": "scalar", + "mappings": [ + { + "input": "", + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.style.color": { + "binding": { + "config": { + "path": "view.params.state" + }, + "enabled": false, + "transforms": [ + { + "fallback": "var(--info)", + "inputType": "scalar", + "mappings": [ + { + "input": "info", + "output": "var(--info)" + }, + { + "input": "success", + "output": "var(--success)" + }, + { + "input": "error", + "output": "var(--error)" + }, + { + "input": "warning", + "output": "var(--warning)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.title" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Alerts/alertTitle", + "color": "#FFFFFF" + }, + "textStyle": { + "paddingLeft": 5, + "paddingRight": 5 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "TopRow" + }, + "position": { + "basis": "40px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Body-TextArea" + }, + "position": { + "basis": "160px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.body" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderStyle": "solid", + "fontFamily": "Arial" + } + }, + "type": "ia.input.text-area" + } + ], + "meta": { + "name": "BodyRow" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "props": { + "style": { + "marginBottom": 2.5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "URL1TextField" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.link1" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderStyle": "solid", + "marginBottom": 2.5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 2.5 + } + }, + "type": "ia.input.text-field" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tlink \u003d self.view.params.link1\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "path": "material/open_in_new" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 10, + "marginTop": 5 + }, + "text": "Open" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "URL1Row" + }, + "position": { + "basis": "40px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "URL2TextField" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.link2" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderStyle": "solid", + "marginBottom": 2.5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 2.5 + } + }, + "type": "ia.input.text-field" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tlink \u003d self.view.params.link2\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "120px" + }, + "props": { + "image": { + "icon": { + "path": "material/open_in_new" + } + }, + "style": { + "backgroundColor": "#555555", + "classes": "Background-Styles/Controller", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 10, + "marginTop": 5 + }, + "text": "Open" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "URL2Row" + }, + "position": { + "basis": "40px", + "display": false + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "content" + }, + "position": { + "basis": "600px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "classes": "Utilities/m-r-16" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "body" + }, + "position": { + "basis": "600px", + "grow": 1 + }, + "props": { + "alignItems": "flex-start", + "justify": "center", + "style": { + "boxSizing": "content-box", + "classes": "Utilities/p-16" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column", + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/resource.json new file mode 100644 index 0000000..6885c71 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e5f0789907338702f278d80d1ac2471477f1a3ca0fdc55d62864b3f4d61bb483" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/thumbnail.png new file mode 100644 index 0000000..40f5bd3 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/view.json new file mode 100644 index 0000000..b25c166 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/view.json @@ -0,0 +1,46 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 54, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "49px" + }, + "props": { + "color": "#FF4747", + "path": "material/not_interested" + }, + "type": "ia.display.icon" + }, + { + "custom": { + "key": "value" + }, + "meta": { + "name": "Label" + }, + "position": { + "basis": "337px" + }, + "props": { + "text": "User does not have the required role." + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/resource.json new file mode 100644 index 0000000..66da619 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "31b9e505ecbe8466f0a1670635def06ebadd1fa60a8c89b8dcdeeda317b00f88" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/thumbnail.png new file mode 100644 index 0000000..739748b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/view.json new file mode 100644 index 0000000..3ade6ba --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/view.json @@ -0,0 +1,239 @@ +{ + "custom": { + "api_region_name": "na", + "loading": false, + "query_params": { + "copy_option": null, + "destination_bucket": null, + "destination_site": null, + "destination_view": null, + "end_time": null, + "error_occurred": null, + "operation": null, + "source_bucket": null, + "source_site": null, + "source_view": null, + "start_time": null, + "username": "" + }, + "raw_data": [] + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tquery_params \u003d self.params.query_params\n\tself.custom.query_params \u003d query_params\n\tsystem.perspective.sendMessage(\u0027refresh_audit_table_data\u0027, scope\u003d\u0027view\u0027)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "query_params": { + "copy_option": null, + "destination_bucket": null, + "destination_site": null, + "destination_view": null, + "end_time": null, + "error_occurred": null, + "operation": null, + "source_bucket": null, + "source_site": null, + "source_view": null, + "start_time": null, + "username": "" + } + }, + "propConfig": { + "custom.api_region_name": { + "binding": { + "config": { + "path": "session.custom.aws.prefix" + }, + "type": "property" + }, + "persistent": true + }, + "custom.loading": { + "persistent": true + }, + "custom.query_params": { + "persistent": true + }, + "custom.raw_data": { + "persistent": true + }, + "params.query_params": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 1200 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Query Params" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.params.params.query_params": { + "binding": { + "config": { + "path": "view.custom.query_params" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "open_expanded": false, + "params": {}, + "path": "Objects/Templates/S3/Audit/Query_Options", + "show_box_shadow_on_expanded": true, + "title": "Query Params", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Log Table" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.params.table_data": { + "binding": { + "config": { + "path": "view.custom.raw_data" + }, + "type": "property" + } + }, + "props.params.title": { + "binding": { + "config": { + "expression": "\u0027SCADA S3 Audit Logs - \u0027+\r\nif({view.custom.loading}, \u0027Loading...\u0027, stringFormat(\u0027%d Record(s)\u0027, len({view.custom.raw_data})))" + }, + "type": "expr" + } + } + }, + "props": { + "params": { + "NavigationSettings": { + "BaseUrl": "/singleMP/main", + "Column": "mp_name", + "Enabled": false + }, + "SelectedRow": [], + "filters": [], + "header_order": [ + "timestamp", + "username", + "operation", + { + "field": "destination_bucket", + "visible": true + }, + "destination_site", + "destination_view", + { + "field": "destination_object_key", + "visible": false + }, + { + "field": "destination_version_id", + "visible": false + }, + "expires", + { + "field": "source_bucket", + "visible": true + }, + "source_site", + "source_view", + { + "field": "source_object_key", + "visible": false + }, + { + "field": "source_version_id", + "visible": false + }, + { + "field": "response", + "visible": false + }, + "error_occurred", + { + "field": "error_message", + "visible": true + }, + { + "field": "audit_id", + "visible": false + }, + { + "field": "copy_option", + "visible": false + }, + { + "field": "ttl", + "visible": false + } + ] + }, + "path": "Objects/Templates/S3/Audit/Log_Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [ + { + "name": "refresh_audit_table_data", + "params": [], + "script": "\t# refresh the audit table query\n\tfrom helper.helper import sanitize_tree\n\tfrom AWS.s3 import S3Manager\n\t\n\tself.view.custom.loading \u003d True\n\tapi_stage \u003d \u0027prod\u0027\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.view.custom.api_region_name\n\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\n\tparams \u003d sanitize_tree(self.view.custom.query_params)\n\tresp \u003d s3m.query_audit_table(return_items_only\u003dTrue, **params)\n\t# sort records in descending order by timestamp (newest first)\n\tself.view.custom.raw_data \u003d sorted(resp, key\u003dlambda d: d[\u0027timestamp\u0027], reverse\u003dTrue)\n\tself.view.custom.loading \u003d False\n\t" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "audit_table_query_params_changed", + "pageScope": false, + "script": "\t# update the `view.custom.query_params` object from received payload\n\tfrom helper.helper import sanitize_tree\n\td \u003d sanitize_tree(payload)\n\tdct \u003d sanitize_tree(self.view.custom.query_params)\n\tdct.update(d)\n\tself.view.custom.query_params \u003d dct\n\t", + "sessionScope": true, + "viewScope": true + }, + { + "messageType": "refresh_audit_table_data", + "pageScope": false, + "script": "\t# implement your handler here\n\tself.refresh_audit_table_data()\n\t", + "sessionScope": true, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/resource.json new file mode 100644 index 0000000..4441854 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "83ed87cca109bc17bb2b7477e1be180010471de5b78320e2c2f3726f12a7eb47" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/thumbnail.png new file mode 100644 index 0000000..bfde933 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/view.json new file mode 100644 index 0000000..2a7d0d3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/view.json @@ -0,0 +1,238 @@ +{ + "custom": { + "api_region_name": "na", + "loading": false, + "operation_options": [ + { + "label": "Copy Single", + "value": "copy_single" + }, + { + "label": "Upload", + "value": "upload" + }, + { + "label": "Delete", + "value": "delete" + }, + { + "label": "Add New Site", + "value": "add_new_site" + } + ], + "query_params": { + "bucket": null, + "object_key": null, + "site": null, + "view": null + }, + "raw_data": [] + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tquery_params \u003d self.params.query_params\n\tself.custom.query_params \u003d query_params\n\tif query_params.get(\u0027bucket\u0027, None) and query_params.get(\u0027site\u0027, None) and query_params.get(\u0027view\u0027, None):\n\t\tsystem.perspective.sendMessage(\u0027refresh_version_table_data\u0027, scope\u003d\u0027view\u0027)\n\telse:\n\t\tself.custom.raw_data \u003d []\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "query_params": { + "bucket": null, + "object_key": null, + "site": null, + "view": null + } + }, + "propConfig": { + "custom.api_region_name": { + "binding": { + "config": { + "path": "session.custom.aws.prefix" + }, + "type": "property" + }, + "persistent": true + }, + "custom.loading": { + "persistent": true + }, + "custom.operation_options": { + "binding": { + "config": { + "expression": "1" + }, + "transforms": [ + { + "code": "\tfrom AWS.s3 import OPERATION_MAP\n\treturn [{\u0027value\u0027:k, \u0027label\u0027:k.replace(\u0027_\u0027,\u0027 \u0027).title()} \n\t\t\tfor k,v in OPERATION_MAP.iteritems()\n\t\t\tif v.get(\u0027method\u0027, \u0027\u0027) in (\u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027)\n\t\t\tand k not in (\u0027query_audit_table\u0027, )]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.query_params": { + "persistent": true + }, + "custom.raw_data": { + "persistent": true + }, + "params.query_params": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "width": 1200 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Query Params" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "props.params.params.query_params": { + "binding": { + "config": { + "path": "view.custom.query_params" + }, + "type": "property" + } + } + }, + "props": { + "params": { + "open_expanded": false, + "params": {}, + "path": "Objects/Templates/S3/Versions/Query_Options", + "show_box_shadow_on_expanded": true, + "title": "Query Params", + "useDefaultHeight": false, + "useDefaultWidth": false + }, + "path": "Framework/Card/Card_Collapsible_Transparent" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Log Table" + }, + "position": { + "basis": "100%" + }, + "propConfig": { + "props.params.table_data": { + "binding": { + "config": { + "path": "view.custom.raw_data" + }, + "type": "property" + } + }, + "props.params.title": { + "binding": { + "config": { + "expression": "if(!isNull({view.custom.query_params.site})\u0026\u0026!isNull({view.custom.query_params.view}),\r\n\treplace(stringFormat(\u0027%s Version History - \u0027,\r\n\t\t{view.custom.query_params.object_key}),\r\n\t\t\u0027SCADA/\u0027,\u0027\u0027)+\r\n\tif({view.custom.loading}, \u0027Loading...\u0027, stringFormat(\u0027%d Record(s)\u0027, len({view.custom.raw_data}))),\r\n\t\u0027Select View to view version history\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "params": { + "NavigationSettings": { + "BaseUrl": "/singleMP/main", + "Column": "mp_name", + "Enabled": false + }, + "SelectedRow": [], + "filters": [], + "header_order": [ + { + "field": "VersionId", + "title": "VERSION ID", + "visible": true + }, + { + "field": "LastModified", + "title": "LAST MODIFIED", + "visible": true + }, + { + "field": "Size", + "title": "SIZE (Bytes)", + "visible": true + }, + { + "field": "IsLatest", + "title": "IS LATEST?", + "visible": true + }, + { + "field": "Key", + "title": "OBJECT KEY", + "visible": true + }, + { + "field": "StorageClass", + "title": "STORAGE CLASS", + "visible": false + }, + { + "field": "ETag", + "title": "ETAG", + "visible": false + } + ] + }, + "path": "Objects/Templates/S3/Versions/Log_Table" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "scripts": { + "customMethods": [ + { + "name": "refresh_version_table_data", + "params": [], + "script": "\tquery_params \u003d self.view.custom.query_params\n\tif query_params.bucket and query_params.site and query_params.view:\n\t\t# refresh the audit table query\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tself.view.custom.loading \u003d True\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\t\n\t\tbucket \u003d self.view.custom.query_params.bucket\n\t\tobj_key \u003d self.view.custom.query_params.object_key\n\t\tresp \u003d s3m.list_object_versions(bucket, obj_key)\n\t\tself.view.custom.raw_data \u003d resp\n\t\tself.view.custom.loading \u003d False\n\telse:\n\t\tself.view.custom.raw_data \u003d []\n\t" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "list_versions_query_params_changed", + "pageScope": false, + "script": "\t# update the `view.custom.query_params` object from received payload\n\tfrom helper.helper import sanitize_tree\n\td \u003d sanitize_tree(payload)\n\tdct \u003d sanitize_tree(self.view.custom.query_params)\n\tdct.update(d)\n\tself.view.custom.query_params \u003d dct\n\tif dct.get(\u0027bucket\u0027,None) and dct.get(\u0027site\u0027,None) and dct.get(\u0027view\u0027,None):\n\t\tself.refresh_version_table_data()\n\telse:\n\t\tself.view.custom.raw_data \u003d []\n\t", + "sessionScope": true, + "viewScope": true + }, + { + "messageType": "refresh_version_table_data", + "pageScope": false, + "script": "\t# implement your handler here\n\tself.refresh_version_table_data()\n\t", + "sessionScope": true, + "viewScope": true + } + ] + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/resource.json new file mode 100644 index 0000000..c02cc5e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "a3a0bd08bc4fc6eaf847f5aea44af39e18cb503df9d903b199a09c3c50484d32" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/thumbnail.png new file mode 100644 index 0000000..39882b5 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/view.json new file mode 100644 index 0000000..3a50ece --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/view.json @@ -0,0 +1,371 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "search", + "buttonid": "search", + "start_time": { + "$": [ + "ts", + 192, + 1754393666432 + ], + "$ts": 1754393666432 + } + } + }, + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tbuttonid \u003d self.custom.activityLogger.buttonid\n\tself.custom.activityLogger.start_time \u003d system.date.now()\n\tactivityLog.productMetrics.callLogger(self, \u0027click\u0027, buttonid)\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "defaultSize": { + "height": 325, + "width": 700 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "77px" + }, + "props": { + "style": { + "backgroundColor": "#555555", + "color": "#FFFFFF", + "fontWeight": "bold", + "textIndent": "15px" + }, + "text": "Search" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/search" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "45px" + }, + "props": { + "style": { + "backgroundColor": "#555555" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\trow \u003d event.value\n\tsource_id \u003d row.get(\"SourceId\") \n\tconfig.project_config.source_id_lookup(self, source_id)\n\tsystem.perspective.closePopup(id \u003d \"Search\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "basis": "294px" + }, + "props": { + "cells": { + "style": { + "textIndent": "15px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "SourceId", + "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": false, + "sort": "none", + "sortable": false, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 250 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Page", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 75 + } + ], + "data": { + "$": [ + "ds", + 192, + 1754393747032 + ], + "$columns": [ + { + "data": [], + "name": "SourceId", + "type": "String" + }, + { + "data": [], + "name": "Page", + "type": "String" + } + ] + }, + "filter": { + "enabled": true, + "style": { + "backgroundColor": "#2B2B2B", + "color": "#FFFFFF" + } + }, + "headerStyle": { + "backgroundColor": "#2B2B2B", + "color": "#FFFFFF", + "textIndent": "15px" + }, + "pager": { + "style": { + "backgroundColor": "#2B2B2B", + "color": "#FFFFFF", + "fontWeight": "bold" + } + }, + "rows": { + "highlight": { + "color": "#FFFFFF" + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "virtualized": false + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "search-devices", + "pageScope": true, + "script": "\tself.props.data \u003d payload.get(\"dataset\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tids \u003d config.project_config.global_project_page_ids\n\tdata \u003d []\n\t\n\tfor k, v in ids.items():\n\t short_page \u003d str(v)[:5]\n\t data.append([str(k), short_page])\n\t\n\theader \u003d [\"SourceId\", \"Page\"]\n\tdataset \u003d system.dataset.toDataSet(header, data)\n\t\n\t# Assign to the Table component\n\tself.getChild(\"Table\").props.data \u003d dataset" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/resource.json new file mode 100644 index 0000000..95f4d3f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "425e76234e56dcdaa7c0865e77ab9301662a5ab84b17a7ced97fc5b0b71a6e5d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/thumbnail.png new file mode 100644 index 0000000..7665d12 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/view.json new file mode 100644 index 0000000..9a95243 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/view.json @@ -0,0 +1,138 @@ +{ + "custom": {}, + "params": { + "Message": { + "acceptPB": "value", + "cancelPB": "value", + "iconPath": "value", + "labelText": "value", + "okFunc": "value" + } + }, + "propConfig": { + "params.Message": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 251, + "width": 299 + } + }, + "root": { + "children": [ + { + "custom": { + "iD": "value" + }, + "meta": { + "name": "Button", + "visible": false + }, + "position": { + "height": 34, + "width": 80, + "x": 22, + "y": 203 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.Message.acceptPB" + }, + "type": "property" + } + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Button_0" + }, + "position": { + "height": 34, + "width": 80, + "x": 177, + "y": 203 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "if({this.props.text} \u003d \"hide\",false, true)" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.Message.cancelPB" + }, + "type": "property" + } + } + }, + "props": { + "primary": false + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 146, + "width": 251, + "x": 22, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.Message.labelText" + }, + "type": "property" + } + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 30, + "width": 30, + "x": 132.5, + "y": 10 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "path": "view.params.Message.iconPath" + }, + "type": "property" + } + } + }, + "props": { + "color": "#EE5B5B" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/resource.json new file mode 100644 index 0000000..deaa18a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "a1770ccc873f6bbdc4c11e4654fdfd398e653678deddf6ff2c6d5854df9a029c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/thumbnail.png new file mode 100644 index 0000000..7fdedb5 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/view.json new file mode 100644 index 0000000..9851204 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/view.json @@ -0,0 +1,592 @@ +{ + "custom": {}, + "params": { + "tagProps": [ + "", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 212, + "width": 336 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "60px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#555555", + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "marginLeft": 0, + "marginRight": 0, + "marginTop": 0 + }, + "textStyle": { + "textAlign": "start", + "textIndent": 10 + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "50px" + }, + "props": { + "style": { + "marginLeft": 10 + }, + "text": "AREA", + "textStyle": { + "fontFamily": "Roboto", + "fontSize": 12 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "195px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}" + }, + "tagPath": "{0}/Config/cfg" + }, + "transforms": [ + { + "code": " decode \u003d system.util.jsonDecode(value)\n area \u003d decode.get(\"Area\")\n sub_area \u003d decode.get(\"SubArea\")\n area_label \u003d str(area) + \"/\" + str(sub_area)\n return area_label\n\t", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginLeft": 50 + }, + "textStyle": { + "fontSize": 12 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px" + }, + "props": { + "style": { + "borderBottomColor": "#555555", + "borderBottomStyle": "solid", + "borderBottomWidth": 0.5, + "borderLeftColor": "#555555", + "borderLeftStyle": "none", + "borderLeftWidth": 0.5, + "borderRightColor": "#555555", + "borderRightStyle": "none", + "borderRightWidth": 0.5, + "borderTopColor": "#555555", + "borderTopStyle": "solid", + "borderTopWidth": 0.5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "50px" + }, + "props": { + "style": { + "marginLeft": 10 + }, + "text": "STATUS", + "textStyle": { + "fontFamily": "Roboto", + "fontSize": 12 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.session.custom.covert \u003d False\n\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label" + }, + "position": { + "basis": "236px" + }, + "propConfig": { + "custom.status": { + "binding": { + "config": { + "path": "/root.custom.status" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "this.custom.status" + }, + "transforms": [ + { + "fallback": "State-Styles/State0", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": 2, + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": 3, + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": 4, + "output": "State-Styles/Background-Fill/State4" + }, + { + "input": 5, + "output": "State-Styles/Background-Fill/State5" + }, + { + "input": 6, + "output": "State-Styles/Background-Fill/State6" + }, + { + "input": 0, + "output": "State-Styles/State0" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "this.custom.status" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 5, + "output": "HEALTHY" + }, + { + "input": 4, + "output": "DIAGNOSTIC" + }, + { + "input": 3, + "output": "PROCESS" + }, + { + "input": 2, + "output": "STOPPED" + }, + { + "input": 1, + "output": "FAULTED" + }, + { + "input": 6, + "output": null + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderColor": "#555555", + "borderStyle": "solid", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5, + "borderWidth": 2, + "marginBottom": 10, + "marginLeft": 50, + "marginRight": 10, + "marginTop": 10 + }, + "textStyle": { + "fontSize": 12, + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "80px" + }, + "props": { + "style": { + "borderBottomColor": "#555555", + "borderBottomStyle": "solid", + "borderBottomWidth": 0.5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 1 #Start\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/not_started" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Background-Styles/Controller", + "marginBottom": 15, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 15 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 2 #Stop\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/stop_circle" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Background-Styles/Controller", + "marginBottom": 15, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 15 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 3 #Reset\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Reset" + }, + "position": { + "basis": "80px" + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/refresh" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Background-Styles/Controller", + "marginBottom": 15, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 15 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "JAM_Reset" + }, + "position": { + "basis": "80px" + }, + "props": { + "enabled": false, + "image": { + "height": 32, + "icon": { + "path": "material/sync_problem" + }, + "position": "top", + "width": 32 + }, + "style": { + "classes": "Background-Styles/Controller", + "marginBottom": 15, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 15 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "333px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_3" + }, + "position": { + "basis": "160px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "custom.has_role": { + "binding": { + "config": { + "expression": "{session.custom.fc}" + }, + "transforms": [ + { + "code": "\trme_role \u003d value +\"-rme-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column", + "style": { + "animationFillMode": "both", + "borderBottomLeftRadius": 10, + "borderBottomRightRadius": 10, + "borderColor": "#555555", + "borderStyle": "solid", + "borderTopLeftRadius": 10, + "borderTopRightRadius": 10, + "borderWidth": 1, + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/resource.json new file mode 100644 index 0000000..43c78c0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "b73e489bbc151df9e51382c50caa66e5f1548e5022f7c763c1819b0fee5ad66d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/thumbnail.png new file mode 100644 index 0000000..1739b2a Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/view.json new file mode 100644 index 0000000..d782399 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/view.json @@ -0,0 +1,932 @@ +{ + "custom": {}, + "params": { + "value": { + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "propConfig": { + "params.value": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 396 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\t" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Start \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Start_PB_STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#00A700", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#41E841" + }, + { + "input": 4, + "output": "#41E841" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/not_started" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "color": "#000000", + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Stop \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Stop_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#CA0D0D", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/stop_circle" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "MotorFaultReset", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Motor Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Motor_Fault_Reset_PB_STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#DCDC03", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#FCFF86" + }, + { + "input": 4, + "output": "#FCFF86" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/refresh" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "PowerBranchFaultReset", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Power Branch Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Power_Branch_Fault_Reset_PB_STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#DCDC03", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#FCFF86" + }, + { + "input": 4, + "output": "#FCFF86" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/power" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "LowAirPressureReset", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Low Air Pressure Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Low_Air_Pressure_Reset_PB_STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#0A0AA4", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#5D5DFF" + }, + { + "input": 4, + "output": "#5D5DFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/waves" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "JAM_Reset", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Jam Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Jam_Restart_PB_STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#D4D4D4", + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": "#FFFFFF" + }, + { + "input": 2, + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/sync_problem" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "SetupMotorSpeeds", + "tooltip": { + "enabled": true, + "location": "top-left" + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027Setup Motor Speeds \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")" + }, + "type": "expr" + } + }, + "props.enabled": { + "binding": { + "config": { + "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" + }, + "type": "expr" + } + }, + "props.image.icon.color": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)" + }, + "type": "expr" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.value.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Setup_Motor_Speeds" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#D4D4D4", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "image": { + "height": 32, + "icon": { + "path": "material/speed" + }, + "position": "top", + "width": 32 + }, + "style": { + "borderColor": "#4A4A4A", + "borderWidth": 2, + "classes": "\n", + "marginBottom": 5, + "marginLeft": 5, + "marginRight": 5, + "marginTop": 5 + }, + "text": "", + "textStyle": { + "fontSize": 12, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "custom.has_role": { + "binding": { + "config": { + "expression": "{session.custom.fc}" + }, + "transforms": [ + { + "code": "\trme_role \u003d value +\"-rme-c2c-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles \n\tor \"eurme-ignition-admins\" in roles):\n\t\treturn True\n\telse:\n\t\treturn False", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "justify": "center" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/resource.json new file mode 100644 index 0000000..1a25428 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "9455d0573f3b4fa578e4acf7e23ddf1df5d3386fe0526d52c17ca63a0749e67d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/thumbnail.png new file mode 100644 index 0000000..f9f3846 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/view.json new file mode 100644 index 0000000..479275f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/view.json @@ -0,0 +1,410 @@ +{ + "custom": { + "counts": { + "Critical": 0, + "Diagnostic": 0, + "High": 1, + "Low": 1, + "Medium": 0, + "Total": 2 + }, + "totalAlarms": { + "$": [ + "ds", + 192, + 1752066852881 + ], + "$columns": [ + { + "data": [ + null, + "MCM01", + "MCM01" + ], + "name": "Location", + "type": "String" + }, + { + "data": [ + "Low", + "High", + "Low" + ], + "name": "Priority", + "type": "String" + }, + { + "data": [ + 1, + 1, + 1 + ], + "name": "Count", + "type": "Long" + } + ] + } + }, + "params": { + "value": { + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "propConfig": { + "custom.counts": { + "persistent": true + }, + "custom.totalAlarms": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority" + }, + "type": "query" + }, + "onChange": { + "enabled": null, + "script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\t# Initialize counts\n\tcounts \u003d {\n\t \"Critical\": 0,\n\t \"High\": 0,\n\t \"Medium\": 0,\n\t \"Low\": 0,\n\t \"Diagnostic\": 0,\n\t \"Total\": 0\n\t}\n\t\n\t# Loop through dataset and aggregate\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1)\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM:\n\t key \u003d severity.capitalize()\n\t if key in counts:\n\t counts[key] +\u003d count\n\t counts[\"Total\"] +\u003d count\n\t \n\tself.custom.counts \u003d counts" + }, + "persistent": true + }, + "params.value": { + "paramDirection": "input", + "persistent": true + }, + "params.value.tagProps": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.print(currentValue.value[0])" + } + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 300 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + }, + "text": "High" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + }, + "text": "Med" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + }, + "text": "Low" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + }, + "text": "Diag" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "32px" + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + }, + "text": "Total" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "25px" + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.custom.counts.High" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.custom.counts.Medium" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.custom.counts.Low" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.custom.counts.Diagnostic" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "32px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.custom.counts.Total" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Text-Styles/Ariel-Bold-12pt", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "25px" + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "custom.has_role": { + "binding": { + "config": { + "expression": "{session.custom.fc}" + }, + "transforms": [ + { + "code": "\trme_role \u003d value +\"-rme-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False", + "type": "script" + } + ], + "type": "expr" + } + }, + "custom.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/resource.json new file mode 100644 index 0000000..d86f3b5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "a969d58ee4b75e4efe5746fa37557fcefb9f1a2a2c79a6177d1ab09ab292901b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/thumbnail.png new file mode 100644 index 0000000..72d1c16 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/view.json new file mode 100644 index 0000000..2a04795 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/view.json @@ -0,0 +1,197 @@ +{ + "custom": { + "state": { + "$": [ + "ds", + 192, + 1751989861336 + ], + "$columns": [ + { + "data": [ + null + ], + "name": "Location", + "type": "String" + }, + { + "data": [ + "Low" + ], + "name": "Priority", + "type": "String" + }, + { + "data": [ + 1 + ], + "name": "Count", + "type": "Long" + } + ] + }, + "status": "" + }, + "params": { + "value": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "propConfig": { + "custom.state": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "1" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority" + }, + "type": "query" + }, + "onChange": { + "enabled": null, + "script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\tif not queryData:\n\t self.custom.status \u003d \"\"\n\t\n\t# Define priority order from highest to lowest\n\tpriority_order \u003d [\"Critical\", \"High\", \"Medium\", \"Low\", \"Diagnostic\"]\n\texisting_priorities \u003d set()\n\tmyPriority \u003d \"\"\n\t\n\t# Populate the set\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1).capitalize()\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM and count \u003e 0:\n\t existing_priorities.add(severity)\n\t\n\t# Find the highest one that exists\n\tfor priority in priority_order:\n\t if priority in existing_priorities:\n\t myPriority \u003d priority\n\t break\n\t\n\tself.custom.status \u003d myPriority" + }, + "persistent": true + }, + "custom.status": { + "persistent": true + }, + "params.value": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 300 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tnavigation.navigate_to_page.detailed_view(self, self.view.params.value.tagProps[0],self.view.params.value.tagProps[0], self.view.params.value.tagProps[3])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.status" + }, + "transforms": [ + { + "fallback": "State-Styles/Background-Fill/State5", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": "Medium", + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": "Low", + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": "Diagnostic", + "output": "State-Styles/Background-Fill/State4" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.custom.status" + }, + "transforms": [ + { + "fallback": "HEALTHY", + "inputType": "scalar", + "mappings": [ + { + "input": "Diagnostic", + "output": "DIAGNOSTIC" + }, + { + "input": "Low", + "output": "HALF WORKFLOW" + }, + { + "input": "Medium", + "output": "CONTROLLED STOP" + }, + { + "input": "High", + "output": "UNCONTROLLED STOP" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "borderColor": "#555555", + "borderStyle": "none", + "cursor": "pointer", + "marginBottom": 8, + "marginTop": 8 + }, + "textStyle": { + "fontSize": 12, + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/resource.json new file mode 100644 index 0000000..223a2f5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "c2cbeddaee8966f9f119403f2b06a9531ec7073b14586a3c9772466d9f8a57fb" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/thumbnail.png new file mode 100644 index 0000000..da58939 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/view.json new file mode 100644 index 0000000..5e0ef42 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/view.json @@ -0,0 +1,789 @@ +{ + "custom": {}, + "params": { + "Status": "", + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "params.Status": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 212, + "width": 336 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "400px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "type": "property" + } + } + }, + "props": { + "textStyle": { + "textIndent": "10px" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "JAM", + "tooltip": { + "enabled": true, + "text": "Jams" + } + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "props": { + "path": "Symbol-Views/Equipment-Views/JAM", + "style": { + "marginRight": "5px" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "10px", + "grow": 1 + }, + "props": { + "style": { + "marginRight": "10px" + }, + "text": 0, + "textStyle": { + "textAlign": "end" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "60px" + }, + "props": { + "style": { + "backgroundColor": "#555555", + "key": "value" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "50px" + }, + "props": { + "style": { + "marginLeft": 10 + }, + "text": "AREA", + "textStyle": { + "fontFamily": "Roboto", + "fontSize": 12 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "195px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "/root.custom.area_display" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "marginLeft": 50 + }, + "textStyle": { + "fontSize": 12 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px" + }, + "props": { + "style": { + "borderBottomColor": "#555555", + "borderBottomStyle": "solid", + "borderBottomWidth": 0.5, + "borderLeftColor": "#555555", + "borderLeftStyle": "none", + "borderLeftWidth": 0.5, + "borderRightColor": "#555555", + "borderRightStyle": "none", + "borderRightWidth": 0.5, + "borderTopColor": "#555555", + "borderTopStyle": "solid", + "borderTopWidth": 0.5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "50px" + }, + "props": { + "style": { + "marginLeft": 10 + }, + "text": "STATUS", + "textStyle": { + "fontFamily": "Roboto", + "fontSize": 12 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "basis": "200px" + }, + "propConfig": { + "props.params.value.tagProps[0]": { + "binding": { + "config": { + "expression": "{view.params.tagProps[0]}" + }, + "type": "expr" + } + } + }, + "props": { + "params": { + "key": "value", + "value": { + "tagProps": [ + null, + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "path": "Symbol-Views/Controller-Views/CommandControlStatus" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "80px" + }, + "props": { + "justify": "space-around", + "style": { + "borderBottomColor": "#555555", + "borderBottomStyle": "solid", + "borderBottomWidth": 0.5 + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "25px" + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "/root.custom.counts" + }, + "transforms": [ + { + "code": "\tfor v in value.values():\n\t\tif v \u003e 0:\n\t\t\treturn \"red\"\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/notifications_active", + "style": { + "classes": "", + "marginLeft": 10 + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "100px" + }, + "props": { + "style": { + "marginLeft": 10 + }, + "text": "ACTIVE ALARMS", + "textStyle": { + "fontFamily": "Roboto", + "fontSize": 12 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_3" + }, + "position": { + "basis": "80px" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "High", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Medium", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Low", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Diag", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Total", + "textStyle": { + "fontSize": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px" + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": 0, + "textStyle": { + "fontSize": 10, + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-alarm-count", + "pageScope": false, + "script": "\thigh \u003d payload.get(\"High\",0)\n\tself.props.text \u003d high", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": 0, + "textStyle": { + "fontSize": 10, + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-alarm-count", + "pageScope": false, + "script": "\tmedium \u003d payload.get(\"Medium\",0)\n\tself.props.text \u003d medium", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": 0, + "textStyle": { + "fontSize": 10, + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-alarm-count", + "pageScope": false, + "script": "\tlow \u003d payload.get(\"Low\",0)\n\tself.props.text \u003d low", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": 0, + "textStyle": { + "fontSize": 10, + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-alarm-count", + "pageScope": false, + "script": "\tdiag \u003d payload.get(\"Diagnostic\",0)\n\tself.props.text \u003d diag", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": 0, + "textStyle": { + "fontSize": 10, + "textAlign": "center" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-alarm-count", + "pageScope": false, + "script": "\tcritical \u003d payload.get(\"Critical\",0)\n\thigh \u003d payload.get(\"High\",0)\n\tmed \u003d payload.get(\"Medium\",0)\n\tlow \u003d payload.get(\"Low\",0)\n\tdiag \u003d payload.get(\"Diagnostic\",0)\n\t\n\ttotal \u003d critical + high + med + low + diag\n\tself.props.text \u003d total\n\t", + "sessionScope": false, + "viewScope": true + } + ] + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "200px" + }, + "props": { + "justify": "space-between" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "334px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_2" + }, + "position": { + "basis": "80px" + }, + "props": { + "style": { + "marginBottom": 5, + "marginLeft": 10, + "marginRight": 10 + } + }, + "type": "ia.container.flex" + } + ], + "custom": { + "counts": { + "Critical": 0, + "Diagnostic": 0, + "High": 0, + "Low": 0, + "Medium": 0 + } + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.session.custom.covert\u003d False\n\twhid \u003d self.session.custom.fc\n\tsession_id \u003d self.session.props.id\n\tpage_id \u003d \"Detailed-View: \" + self.view.params.tagProps[0]\n\tCommands.analytics.send_page_details(whid, session_id, page_id)\n\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "propConfig": { + "custom.Total": { + "binding": { + "config": { + "expression": "{view.params.Counts.High} + {view.params.Counts.Medium} + {view.params.Counts.Low} + {view.params.Counts.Diag}" + }, + "type": "expr" + } + }, + "custom.area": { + "binding": { + "config": { + "expression": "jsonGet({this.custom.plc_dict}, \"Area\")" + }, + "type": "expr" + } + }, + "custom.area_display": { + "binding": { + "config": { + "expression": "if(len({this.custom.sub_area})\u003e0,\r\nconcat({this.custom.area} + \"/\" + {this.custom.sub_area}),\r\n{this.custom.area})" + }, + "type": "expr" + } + }, + "custom.counts": { + "onChange": { + "enabled": null, + "script": "\tsystem.perspective.sendMessage(\"update-alarm-count\", self.custom.counts, \"view\")" + } + }, + "custom.plc_dict": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "expression": "jsonGet({value}, {view.params.tagProps[0]})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.provider": { + "binding": { + "config": { + "expression": "\"[\"+{session.custom.fc}+\"_SCADA_TAG_PROVIDER]\"" + }, + "type": "expr" + } + }, + "custom.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "if(isNull({value}), 0, {value})", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "custom.sub_area": { + "binding": { + "config": { + "expression": "jsonGet({this.custom.plc_dict}, \"SubArea\")" + }, + "type": "expr" + } + }, + "custom.table": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority" + }, + "type": "query" + }, + "onChange": { + "enabled": null, + "script": "\ttry:\n\t\tMCM \u003d self.view.params.tagProps[0]\n\t\tdata \u003d currentValue.value\n\t\t\n\t\t# Convert dataset to PyDataSet\n\t\trows \u003d system.dataset.toPyDataSet(data)\n\t\t\n\t\t# Initialize counts dictionary with first-letter uppercase keys\n\t\tcounts \u003d {\n\t\t\t\"Low\": 0,\n\t\t\t\"Medium\": 0,\n\t\t\t\"High\": 0,\n\t\t\t\"Critical\": 0,\n\t\t\t\"Diagnostic\": 0\n\t\t}\n\t\t\n\t\t# Loop through rows and filter for current MCM\n\t\tfor row in rows:\n\t\t\tif row[\"Location\"] \u003d\u003d MCM:\n\n\t\t\t\tpriority \u003d row[\"Priority\"].capitalize()\n\t\t\t\tif priority in counts:\n\t\t\t\t\tcounts[priority] \u003d row[\"Count\"]\n\t\t\n\t\tself.custom.counts \u003d counts\n\t\n\texcept Exception as e:\n\t\tsystem.perspective.print(\"Error gaq dzma: \" + str(e))" + } + }, + "meta.visible": { + "binding": { + "config": { + "expression": "if({session.custom.covert} \u003d False \u0026\u0026 {this.custom.status} \u003d 5, False, True)" + }, + "type": "expr" + } + } + }, + "props": { + "direction": "column", + "style": { + "animationFillMode": "both", + "borderBottomLeftRadius": 10, + "borderBottomRightRadius": 10, + "borderColor": "#555555", + "borderStyle": "solid", + "borderTopLeftRadius": 10, + "borderTopRightRadius": 10, + "borderWidth": 1, + "box-shadow": "5px 5px 5px grey", + "classes": "Background-Styles/Controller", + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/resource.json new file mode 100644 index 0000000..330c5db --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "0924de678f16ee80f8c00ca49742e7f9bb95ee0232e59ad397cc838b3e9d5a4e" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/thumbnail.png new file mode 100644 index 0000000..1555b60 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/view.json new file mode 100644 index 0000000..e5f92f4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/view.json @@ -0,0 +1,105 @@ +{ + "custom": {}, + "params": { + "pageid": "value", + "panel_id": "value", + "text": "value" + }, + "propConfig": { + "params.pageid": { + "paramDirection": "input", + "persistent": true + }, + "params.panel_id": { + "paramDirection": "input", + "persistent": true + }, + "params.text": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 30, + "width": 160 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.navigate(\"/\" + self.view.params.pageid)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80%", + "grow": 1 + }, + "propConfig": { + "props.tagProps[0]": { + "binding": { + "config": { + "path": "view.params.panel_id" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.text" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "borderStyle": "solid", + "borderWidth": "0.5px", + "cursor": "pointer" + }, + "tagProps": [ + null, + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ], + "textStyle": { + "color": "#000000", + "fontFamily": "inherit", + "fontSize": "1vmin", + "fontWeight": "bold" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "alignContent": "flex-start", + "justify": "center" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/resource.json new file mode 100644 index 0000000..61273ad --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "eeca1ba85b1176dd598fd832a306ee9f278729345acc9f4c582a5c278a9f1639" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/view.json new file mode 100644 index 0000000..4732f1a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/view.json @@ -0,0 +1,684 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed", + "type": "UNKNOWN" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM06/Chute/NC/S02_203CH", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "1": "{view.custom.type}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{1}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "1": "", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{1}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "1": "{view.custom.type}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{1}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Button_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "UNKNOWN", + "inputType": "scalar", + "mappings": [ + { + "input": 5, + "output": "Chute_JR" + }, + { + "input": 4, + "output": "GS" + }, + { + "input": 3, + "output": "PR" + }, + { + "input": 2, + "output": "Start" + }, + { + "input": 1, + "output": "JR" + }, + { + "input": 6, + "output": "Enable" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Button" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True,\r\n{view.custom.state} + 100,\r\n{view.custom.state})" + }, + "enabled": false, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 20 V 20 H 0 Z", + "fill": { + "paint": "#AAAAAA" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 20 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-BTN\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/resource.json new file mode 100644 index 0000000..b55a50b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-05T11:43:44Z" + }, + "lastModificationSignature": "184bdfad75538bf26d7604c9af7b4314a3cd9eaecd02e6bde3f0d39ef6d7fd28" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/thumbnail.png new file mode 100644 index 0000000..67faf6d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/view.json new file mode 100644 index 0000000..422480d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/view.json @@ -0,0 +1,728 @@ +{ + "custom": { + "alarm_message": null, + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running_status": 4, + "searchId": "value", + "state": 5, + "state_string": "Unknown", + "tag_path_to_lookup": "[\"value\"]" + }, + "params": { + "directionLeft": false, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.alarm_message": { + "persistent": true + }, + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "expression": "coalesce(try(jsonGet(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),\"state\"),null),{view.params.forceRunningStatus},4)" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.tag_path_to_lookup": { + "binding": { + "config": { + "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" + }, + "type": "expr" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 40 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 1, + "width": 1, + "x": 0.0015, + "y": 0.0004 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "!{view.params.directionLeft}" + }, + "type": "expr" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 39 V 24 H 0 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 34,17 26,12 34,7 Z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 9.7399998,7 H 25 V 17 H 9.7399998 Z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 5,7 h 3 v 5 H 5 Z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "style": {}, + "viewBox": "-0.5 -0.5 40 25" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Camera_Left" + }, + "position": { + "height": 1, + "width": 1, + "x": 0.0015, + "y": 0.0004 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{view.params.directionLeft}" + }, + "type": "expr" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 39 V 24 H 0 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 31,7 h 3 v 5 h -3 z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 13.74,7 H 29 V 17 H 13.74 Z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 5.556602,17 8,-5 -8,-5 z", + "fill": { + "paint": "#000000" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "style": {}, + "viewBox": "-0.5 -0.5 40 25" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "Disconnects/Device-Connected", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Disconnects/Device-Disconnected" + }, + { + "input": false, + "output": "Disconnects/Device-Connected" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "aspectRatio": "40:25", + "mode": "percent", + "style": { + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/resource.json new file mode 100644 index 0000000..fe0a359 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "f50441f3f2283ba0a54cf592732f4af2c11ae08610e11f9169c74342e9242392" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/thumbnail.png new file mode 100644 index 0000000..2536462 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/view.json new file mode 100644 index 0000000..a197783 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/view.json @@ -0,0 +1,313 @@ +{ + "custom": { + "alarm_message": null, + "disconnected": true, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Normal" + }, + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.has_state": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 47, + "width": 68 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ControlCabinet" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 4 + }, + "transform": "rotate(-180,30.5,20)", + "type": "path" + }, + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": { + "paint": "#4C4C4C" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 4 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 62 41" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "aspectRatio": "68:47", + "mode": "percent", + "style": { + "classes": "Disconnects/Device-Connected", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/resource.json new file mode 100644 index 0000000..a797352 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-01T11:40:31Z" + }, + "lastModificationSignature": "93f3462ba258f1beb35970de6a58577ed5d70123f708c2918c4600c693d3d55f" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/view.json new file mode 100644 index 0000000..d06193c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/view.json @@ -0,0 +1,581 @@ +{ + "custom": { + "color": "#00FF00", + "priority": "No Active Alarms", + "state": "Normal" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/IO_BLOCK/FIO/UL1_3_FIO1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + }, + "params.tagProps[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[3]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[4]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[5]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[6]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[7]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[8]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps[9]": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 40 + }, + "styles": "value" + }, + "root": { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "basis": "264px" + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "path": "material/place", + "style": { + "classes": "State-Styles/State1" + } + }, + "type": "ia.display.icon" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\t\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "text": "", + "tooltip": { + "enabled": true, + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_fio" + }, + "type": "property" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json new file mode 100644 index 0000000..3683a6a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-07-27T16:42:36Z" + }, + "lastModificationSignature": "5fc27b2afcc208a45cf65d89f674b14b8bd3db7424a7f0479909cd9b99154ef8" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png new file mode 100644 index 0000000..6be433c Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json new file mode 100644 index 0000000..b88c843 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json @@ -0,0 +1,537 @@ +{ + "custom": { + "disconnected": false, + "openDiverter": false, + "plc": "System", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Closed" + }, + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "mirror": true, + "tagProps": [ + "System/MCM01/Station/EPC/UL1_3_EPC1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.openDiverter": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 0, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Low\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n0, \"Closed\",\r\n1, \"Open\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 16, + "width": 15 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OpenDiverterArm" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.openDiverter} \u0026\u0026 {view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 1 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden" + }, + "viewBox": "0 1.3 38 46" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "ClosedDiverterArm" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.openDiverter} \u0026\u0026 {view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 96 0 L 96 16 L 0 16 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 2 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden" + }, + "viewBox": "-1 0 98 17" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "OpenDiverterArmLeft" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.openDiverter} \u0026\u0026 !{view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,40 32.820217,3.3897904 c 2.588185,-2.76545766 5.724342,-0.1926117 3.552046,2.114172 L 8,40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 1 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden", + "transform": "scaleX(-1)" + }, + "viewBox": "0 1.3 38 46" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "ClosedDiverterArmLeft" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "!{view.custom.openDiverter} \u0026\u0026 !{view.params.mirror}" + }, + "type": "expr" + } + }, + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 96 0 L 96 16 L 0 16 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 2 + }, + "type": "path" + } + ], + "preserveAspectRatio": "xMidYMax", + "style": { + "overflow": "hidden", + "transform": "scaleX(-1)" + }, + "viewBox": "-1 0 98 17" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Low" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "enabled": false, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "solid" + }, + { + "input": false, + "output": "none" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "direction": "column", + "justify": "center", + "style": { + "borderColor": "#FF0000", + "borderStyle": "none", + "borderWidth": "2px", + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/resource.json new file mode 100644 index 0000000..021ae97 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "34a9614c41163a02849a9aa2d0d451502686f1a0f6410fde6845fd83dd2c7b16" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/view.json new file mode 100644 index 0000000..77e354b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/view.json @@ -0,0 +1,604 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "directionLeft": false, + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/Conveyor/EXTENDO/UL1_1_EX1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ], + "type": 1 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + }, + "params.type": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 29 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RunningStatus" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 50 0 L 65 0 L 80 30 L 65 60 L 50 60 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": "2" + }, + "type": "path" + }, + { + "d": "M 45 0 L 25 0 L 25 30 L 25 60 L 45 60 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": "2" + }, + "type": "path" + }, + { + "d": "M 0 0 L 20 0 L 20 30 L 20 60 L 0 60 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": "2" + }, + "type": "path" + } + ], + "style": { + "overflow": "hidden" + }, + "viewBox": "-1.5 -1.5 73 63" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Extendo\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "justify": "center" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/resource.json new file mode 100644 index 0000000..42fc928 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e6f6d9211643bf19f40f62daee69ff0a54b8bcf1c88956d18f5cc56a06508652" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/thumbnail.png new file mode 100644 index 0000000..9ace1cc Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/view.json new file mode 100644 index 0000000..fd3376e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/view.json @@ -0,0 +1,76 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 24, + "width": 24 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "troubleshoot_white_24dp" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "elements": [ + { + "elements": [ + { + "fill": { + "paint": "transparent" + }, + "height": "24", + "name": "rect", + "type": "rect", + "width": "24" + } + ], + "name": "group", + "type": "group" + }, + { + "elements": [ + { + "elements": [ + { + "d": "M22,20.59l-4.69-4.69C18.37,14.55,19,12.85,19,11c0-4.42-3.58-8-8-8c-4.08,0-7.44,3.05-7.93,7h2.02C5.57,7.17,8.03,5,11,5 c3.31,0,6,2.69,6,6s-2.69,6-6,6c-2.42,0-4.5-1.44-5.45-3.5H3.4C4.45,16.69,7.46,19,11,19c1.85,0,3.55-0.63,4.9-1.69L20.59,22 L22,20.59z", + "name": "path", + "type": "path" + }, + { + "name": "polygon", + "points": "8.43,9.69 9.65,15 11.29,15 12.55,11.22 13.5,13.5 15.5,13.5 15.5,12 14.5,12 13.25,9 11.71,9 10.59,12.37 9.35,7 7.7,7 6.45,11 1,11 1,12.5 7.55,12.5", + "type": "polygon" + } + ], + "name": "group", + "type": "group" + } + ], + "name": "group", + "type": "group" + } + ], + "fill": { + "paint": "#FFFFFF" + }, + "viewBox": "0 0 24 24" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json new file mode 100644 index 0000000..d4850a3 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "77f6e46bf3bc0b80ebf1fb61ca8abd163a3f34a3ce04e3f2074e22057e46979b" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json new file mode 100644 index 0000000..2c0dfdd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json @@ -0,0 +1,571 @@ +{ + "custom": { + "alarm_message": null, + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 46, + "width": 68 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "MCM" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + }, + "onChange": { + "enabled": false, + "script": "" + } + }, + "props.elements[1].style.fill": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#FFFFFF\",\r\n \"#000000\"\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 1 0 H 60 V 40 H 1 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 4 + }, + "type": "path" + }, + { + "style": { + "classes": "", + "fontWeight": "bold" + }, + "text": "MCM", + "type": "text", + "x": 11, + "y": 26 + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 62 41" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-MCM\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "aspectRatio": "68:47", + "mode": "percent", + "style": { + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/resource.json new file mode 100644 index 0000000..b262257 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "9a5bfc2fb2028bd815bc70fcb0414c54810e584a0187c9fd095326e711bdbffd" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/thumbnail.png new file mode 100644 index 0000000..e3d6bcf Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/view.json new file mode 100644 index 0000000..f28613d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/view.json @@ -0,0 +1,648 @@ +{ + "custom": { + "alarm_message": null, + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running_status": 0, + "searchId": "value", + "state": 5, + "state_string": "Unknown" + }, + "params": { + "directionLeft": false, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.alarm_message": { + "persistent": true + }, + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceRunningStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PressureSwitch_2" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "id": "stop1507", + "name": "stop1507", + "offset": "0", + "stopColor": "#020101", + "stopOpacity": "1", + "style": { + "stopColor": "#020101", + "stopOpacity": "1" + }, + "type": "stop" + } + ], + "id": "linearGradient1509", + "name": "linearGradient1509", + "type": "linearGradient" + }, + { + "gradientTransform": "matrix(1.0156665,0,0,0.98457489,-0.22712617,-0.22017344)", + "gradientUnits": "userSpaceOnUse", + "href": "#linearGradient1509", + "id": "linearGradient3055", + "name": "linearGradient3055", + "type": "linearGradient", + "x1": "2.4719212", + "x2": "5.6080947", + "y1": "4.8826461", + "y2": "4.8826461" + } + ], + "id": "defs2", + "name": "defs2", + "type": "defs" + }, + { + "elements": [ + { + "fill": { + "opacity": 1 + }, + "height": "11.216189", + "id": "rect5779", + "name": "rect5779", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "paint": "#000000", + "width": 1.2 + }, + "style": { + "paintOrder": "stroke fill markers" + }, + "type": "rect", + "width": "11.21619", + "x": "7.7715612e-16", + "y": "0" + }, + { + "elements": [ + { + "fill": { + "opacity": "1", + "url": "url(#linearGradient3055)" + }, + "id": "tspan1453", + "name": "tspan1453", + "stroke": { + "dasharray": "none", + "width": "0.116835" + }, + "text": "P", + "type": "tspan", + "x": "0.99078566", + "y": "9.0214157" + } + ], + "fill": { + "opacity": "1", + "url": "url(#linearGradient3055)" + }, + "id": "text1455", + "name": "text1455", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "paint": "#000000", + "width": "0.116835" + }, + "style": { + "InkscapeFontSpecification": "\u0027Arial Narrow, Normal\u0027", + "fontFamily": "\u0027Arial Narrow\u0027", + "fontSize": "9.7785px", + "paintOrder": "stroke fill markers" + }, + "text": "P", + "transform": "scale(0.98457515,1.0156665)", + "type": "text", + "x": "0.99078566", + "y": "9.0214157" + }, + { + "d": "M 7.1327097,2.9635882 9.9122555,5.8103519 6.9937326,8.2419488", + "fill": { + "opacity": "0.0131332", + "paint": "#020101" + }, + "id": "path3213", + "name": "path3213", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "paint": "#000000", + "width": "0.663625" + }, + "style": { + "paintOrder": "stroke fill markers" + }, + "type": "path" + } + ], + "id": "layer1", + "name": "layer1", + "transform": "translate(0.22362278,0.22362278)", + "type": "group" + } + ], + "preserveAspectRatio": "none", + "style": {}, + "viewBox": "0 0 11.663437 11.663435" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "Disconnects/Device-Connected", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Disconnects/Device-Disconnected" + }, + { + "input": false, + "output": "Disconnects/Device-Connected" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/resource.json new file mode 100644 index 0000000..107bdde --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "398bb20f4ce076580f26fc56efda9816403cf4a67a872255f8cb17267bc89731" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/thumbnail.png new file mode 100644 index 0000000..b30742b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/view.json new file mode 100644 index 0000000..d1b1cfd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/view.json @@ -0,0 +1,608 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/Station/EPC/UL1_3_EPC1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 38, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PullChord_Part2" + }, + "position": { + "height": 1, + "width": 1, + "x": 0.0015, + "y": 0.0005 + }, + "propConfig": { + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if({view.custom.state} \u003d \"Closed\", \"#000000\", {view.custom.color})" + }, + "type": "expr" + } + }, + "props.elements[2].visibility": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.color} \u003d \"#FF0000\" \u0026\u0026 \r\n {parent.meta.visible},\r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)" + }, + "type": "expr" + } + }, + "props.elements[3].visibility": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.color} \u003d \"#00FF00\" \u0026\u0026 \r\n {parent.meta.visible} || {view.custom.state} \u003d \"Closed\",\r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0.01621377,0.01595147 H 25.93719 V 41.138171 H 0.01621377 Z", + "fill": { + "paint": "#AAAAAA" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 20.752995,30.343588 a 7.2578735,7.1963887 0 0 1 -7.257873,7.196389 7.2578735,7.1963887 0 0 1 -7.2578736,-7.196389 7.2578735,7.1963887 0 0 1 7.2578736,-7.196389 7.2578735,7.1963887 0 0 1 7.257873,7.196389 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 13.785537,6.4238337 -7.0747349,-3.1261989 -0.985,1.7060701 6.2447349,4.563801 z", + "fill": { + "paint": "#0000FF" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 12.141737,10.447495 -5.3573679,5.578853 1.2662916,1.509108 6.4243953,-4.30722 z", + "fill": { + "paint": "#0000FF" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 21.18,10 a 5,5 0 0 1 -5,5 5,5 0 0 1 -5,-5 5,5 0 0 1 5,-5 5,5 0 0 1 5,5 z", + "fill": { + "paint": "#0000FF" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "viewBox": "-0.5 -0.5 27 42" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-EPC\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_safety" + }, + "type": "property" + } + } + }, + "props": { + "aspectRatio": "25:38", + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/resource.json new file mode 100644 index 0000000..3f24b7e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "fd35b0428bb71941580f5f680214c4312fce06fb2c8ac4da5231ec7fa834de09" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/view.json new file mode 100644 index 0000000..81931d7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/view.json @@ -0,0 +1,535 @@ +{ + "custom": { + "color": "#00FF00", + "priority": "No Active Alarms", + "state": "Normal" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/Station/EPC/UL1_4_EPC1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 10 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PullChord_Part2" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "elements": [ + { + "d": "M 0.01621377,0.01595147 H 25.93719 V 41.138171 H 0.01621377 Z", + "fill": { + "paint": "#AAAAAA" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 27 42" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-EPC\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_safety" + }, + "type": "property" + } + } + }, + "props": { + "aspectRatio": "10:25", + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/resource.json new file mode 100644 index 0000000..d1f0fab --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "8981f9d227ef75b557fc1f12e50809016ade0277653dc30e351adfb72a704c8d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/view.json new file mode 100644 index 0000000..de13fbd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/view.json @@ -0,0 +1,558 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/Station/EPC/UL1_4_EPC1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 10, + "width": 100 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PullChord_Line2" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].stroke.paint": { + "binding": { + "config": { + "expression": "if({view.custom.state} \u003d \"Closed\", \"#000000\", {view.custom.color})" + }, + "type": "expr" + } + }, + "props.elements[0].visibility": { + "binding": { + "config": { + "expression": "if({parent.meta.visible}, \u0027visible\u0027, \u0027hidden\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "m -0.38931298,5.5674501 c 33.95623398,0 67.91246898,0 101.86870298,0", + "fill": { + "paint": "#FFFFFF" + }, + "name": "path", + "opacity": 1, + "stroke": { + "dasharray": "0, 0, 0", + "dashoffset": "\"20\"", + "key": "\"2.15848\"", + "miterlimit": "\"10\"", + "width": 3 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 102 12" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-EPC\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_safety" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "none", + "cursor": "pointer", + "overflow": "visible" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/resource.json new file mode 100644 index 0000000..9dfe82d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "85195e9b13acea8f871b5af45ced16a240d945d47db304af2ee77575b8b258e4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/view.json new file mode 100644 index 0000000..c7979ed --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/view.json @@ -0,0 +1,570 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 10 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PullChord_Line" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].stroke.paint": { + "binding": { + "config": { + "expression": "if({view.custom.state} \u003d \"Closed\", \"#000000\", {view.custom.color})" + }, + "type": "expr" + } + }, + "props.elements[0].visibility": { + "binding": { + "config": { + "expression": "if({parent.meta.visible}, \u0027visible\u0027, \u0027hidden\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "m 5.5101192,-0.5 c 0,33.992373 0,67.984747 0,101.97712", + "fill": { + "paint": "#FFFFFF" + }, + "name": "path", + "opacity": 1, + "stroke": { + "dasharray": "0, 0, 0", + "dashoffset": "\"20\"", + "key": "\"2.15848\"", + "miterlimit": "\"10\"", + "width": 3 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 10 100" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_safety" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer", + "overflow": "visible" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/resource.json new file mode 100644 index 0000000..908646a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-01T11:40:31Z" + }, + "lastModificationSignature": "6a394d4c6aecd30a1f97ef461129c4dd2bffdee3d15273841586356931b538db" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/view.json new file mode 100644 index 0000000..d1d3219 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/view.json @@ -0,0 +1,1104 @@ +{ + "custom": { + "start_color": "#C2C2C2", + "start_priority": "No Active Alarms", + "start_state": "Closed", + "stop_priority": "No Active Alarms", + "stop_state": "Closed" + }, + "params": { + "forceFaultStatus": null, + "tagProps": [ + "System/MCM01/Station/SS_PB/UL3_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.start_color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.start_priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.start_state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.stop_color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Stop/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + }, + "custom.stop_priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.stop_state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Stop/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 50 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Start", + "tooltip": { + "style": {} + } + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.start_priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.start_state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.start_priority} + \", State: \" + {view.custom.start_state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.start_state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.start_color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 21 V 20 H 0 Z", + "fill": { + "paint": "#AAAAAA" + }, + "id": "outer-rect", + "name": "outer-rect", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 c 0,3.865993 -3.134007,7 -7,7 -3.8659932,0 -7,-3.134007 -7,-7 0,-3.8659932 3.1340068,-7 7,-7 3.865993,0 7,3.1340068 7,7 z", + "fill": {}, + "id": "inner-circle", + "name": "inner-circle", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 40 20" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Stop", + "tooltip": { + "style": {} + } + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.start_priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.stop_state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.stop_priority} + \", State: \" + {view.custom.stop_state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.stop_state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.stop_color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 20, 0 H 40 V 20 H 20 Z", + "fill": { + "paint": "#AAAAAA" + }, + "id": "outer-rect", + "name": "outer-rect", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 36.642136,10.376001 c 0,3.865993 -3.134007,7 -7,7 -3.865993,0 -7,-3.134007 -7,-7 0,-3.8659928 3.134007,-6.9999998 7,-6.9999998 3.865993,0 7,3.134007 7,6.9999998 z", + "fill": {}, + "id": "inner-circle-8", + "name": "inner-circle-8", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 40 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-SS-BTN\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.start_priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "High", + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.start_state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Start Priority: \" + {view.custom.start_priority} + \", Start State: \" + {view.custom.start_state} + \", Stop Priority: \" + {view.custom.stop_priority} + \", Stop State: \" + {view.custom.stop_state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/resource.json new file mode 100644 index 0000000..9c28470 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "b120df6d8bed9441c366c0f5ad339de9c0eed48560bfa20d9211223b5d7a9492" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json new file mode 100644 index 0000000..3baef39 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json @@ -0,0 +1,640 @@ +{ + "custom": { + "alarm_message": null, + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "angle": 0, + "directionLeft": false, + "tagProps": [ + "System/MCM01/Conveyor/VFD/UL1_3_VFD1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.angle": { + "paramDirection": "input", + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 29 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RunningStatus" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if(({view.custom.display_icon} || ({view.custom.show_running} \u0026\u0026 !{view.custom.show_error})) \u0026\u0026 !{view.params.directionLeft}, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.style.transform": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"\")", + "type": "expression" + }, + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scaleX(-1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 40 0 L 40 0 L 70 30 L 40 60 L 40 60 L 0 60 L 30 30 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": "2" + }, + "type": "path" + } + ], + "style": { + "overflow": "hidden" + }, + "viewBox": "-1.5 -1.5 73 63" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-VFD\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_running" + }, + "type": "property" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "enabled": false, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "solid" + }, + { + "input": false, + "output": "none" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "justify": "center", + "style": { + "borderColor": "#FF0000", + "borderStyle": "none", + "borderWidth": "2px", + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/resource.json new file mode 100644 index 0000000..5dcc0a9 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "19b3771efab83f52be0c0a5b76fe50132dbeb57e78b5fbb85e16853fd4d5478d" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/view.json new file mode 100644 index 0000000..425f4ee --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/view.json @@ -0,0 +1,580 @@ +{ + "custom": { + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed", + "type": 0 + }, + "params": { + "directionLeft": false, + "tagProps": [ + "System/MCM04/Chute/FL_CHUTE/FL3012_1CH", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.type": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 29 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RunningStatus" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.directionLeft" + }, + "transforms": [ + { + "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#FFFFFF\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 0 L 40 0 L 40 0 L 70 30 L 40 60 L 40 60 L 0 60 L 0 0 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 3 + }, + "type": "path" + } + ], + "style": { + "overflow": "hidden" + }, + "viewBox": "-1.5 -1.5 73 63" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-SNP\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "justify": "center" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/resource.json new file mode 100644 index 0000000..fc22b38 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": false, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-05-05T11:32:51Z" + }, + "lastModificationSignature": "bfc32d1b73d4c2b852bc0b4138d804e75fc123a2ade9d5316609d26e09f096dd" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/thumbnail.png new file mode 100644 index 0000000..2505281 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/view.json new file mode 100644 index 0000000..f4b2e13 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/view.json @@ -0,0 +1,631 @@ +{ + "custom": { + "alarm_message": null, + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running_status": 0, + "searchId": "PLC01", + "state": 5, + "state_string": "Unknown" + }, + "params": { + "directionLeft": false, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.alarm_message": { + "persistent": true + }, + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceRunningStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 100 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "THEA" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours}[\"state\"+{value}] \u003d null, \r\n{session.custom.colours}[\"Fallback\"],\r\n{session.custom.colours}[\"state\"+{value}])", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "id": "defs963", + "name": "defs963", + "type": "defs" + }, + { + "elements": [ + { + "d": "M 108.69378,77.205299 A 30.372795,30.372799 0 0 1 78.350262,107.57808 30.372795,30.372799 0 0 1 47.948245,77.263855 30.372795,30.372799 0 0 1 78.23315,46.832627 a 30.372795,30.372799 0 0 1 30.4604,30.255561", + "fill": {}, + "id": "path2823", + "name": "path2823", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "miterlimit": "4", + "paint": "#000000", + "width": "2.30899" + }, + "style": { + "paintOrder": "markers fill stroke" + }, + "type": "path" + }, + { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "d": "m 308.1,277.95 c 0,35.7 -28.9,64.6 -64.6,64.6 -35.7,0 -64.6,-28.9 -64.6,-64.6 0,-35.7 28.9,-64.6 64.6,-64.6 35.7,0 64.6,28.9 64.6,64.6 z m 132.2,-161.9 c 25.8,0 46.7,20.9 46.7,46.7 v 122.4 103.8 c 0,27.5 -22.3,49.8 -49.8,49.8 H 49.8 C 22.3,438.75 0,416.45 0,388.95 v -103.9 -122.3 0 c 0,-25.8 20.9,-46.7 46.7,-46.7 h 93.4 l 4.4,-18.6 c 6.7,-28.8 32.4,-49.2 62,-49.2 h 74.1 c 29.6,0 55.3,20.4 62,49.2 l 4.3,18.6 z m -342.9,67.4 c 0,-12.9 -10.5,-23.4 -23.4,-23.4 -13,0 -23.5,10.5 -23.5,23.4 0,12.9 10.5,23.4 23.4,23.4 13,0.1 23.5,-10.4 23.5,-23.4 z m 261.3,94.5 c 0,-63.6 -51.6,-115.2 -115.2,-115.2 -63.6,0 -115.2,51.6 -115.2,115.2 0,63.6 51.6,115.2 115.2,115.2 63.6,0 115.2,-51.6 115.2,-115.2 z", + "id": "path954", + "name": "path954", + "type": "path" + } + ], + "id": "g956", + "name": "g956", + "type": "group" + } + ], + "id": "g958", + "name": "g958", + "transform": "matrix(0.10552692,0,0,0.1049851,58.573883,61.035557)", + "type": "group" + }, + { + "elements": [ + { + "id": "tspan1770", + "name": "tspan1770", + "stroke": { + "width": "0.60875" + }, + "style": { + "InkscapeFontSpecification": "\u0027sans-serif Bold\u0027", + "fontFamily": "sans-serif", + "fontSize": "12.9867px", + "fontStretch": "normal", + "fontStyle": "normal", + "fontVariant": "normal", + "fontWeight": "bold" + }, + "text": "THEA", + "type": "tspan", + "x": "64.152344", + "y": "64.152351" + } + ], + "id": "text1772", + "name": "text1772", + "stroke": { + "width": "0.60875" + }, + "style": { + "InkscapeFontSpecification": "\u0027sans-serif Bold\u0027", + "fontFamily": "sans-serif", + "fontSize": "12.9867px", + "fontStretch": "normal", + "fontStyle": "normal", + "fontVariant": "normal", + "fontWeight": "bold", + "lineHeight": "1.25" + }, + "type": "text", + "x": "64.152344", + "y": "64.152351" + } + ], + "id": "g2695", + "name": "g2695", + "transform": "matrix(0.78290367,0,0,0.78703031,12.345936,11.651649)", + "type": "group" + } + ], + "id": "g3222", + "name": "g3222", + "transform": "matrix(0.45169465,0,0,0.44391375,-20.878644,-19.304276)", + "type": "group" + } + ], + "fill": { + "paint": "#000000" + }, + "style": {}, + "viewBox": "0 0 29.22 29.22" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_camera_jams" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "Disconnects/Device-Connected", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Disconnects/Device-Disconnected" + }, + { + "input": false, + "output": "Disconnects/Device-Connected" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "aspectRatio": "1:1", + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/resource.json new file mode 100644 index 0000000..45ce356 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "689a6e19bd4fd411c03e0a1da9e7168f0552180df2a20c14588a6f3321eadade" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/thumbnail.png new file mode 100644 index 0000000..bb9e913 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/view.json new file mode 100644 index 0000000..ed00255 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/view.json @@ -0,0 +1,58 @@ +{ + "custom": {}, + "params": {}, + "props": {}, + "root": { + "children": [ + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 100, + "width": 101, + "x": 148, + "y": 179 + }, + "props": { + "color": "#AC0065", + "path": "material/location_on", + "style": { + "backgroundImage": "", + "classes": "State-Styles/AAA-Style", + "fill": "url(\"/system/images/Backgrounds/hexagons1.svg\")" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "height": 63, + "width": 325, + "x": 157, + "y": 72 + }, + "props": { + "options": [ + { + "label": "This is selected", + "value": "This is selected" + } + ], + "placeholder": { + "text": "" + }, + "value": "This is selected" + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/resource.json new file mode 100644 index 0000000..4493707 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-01T11:40:31Z" + }, + "lastModificationSignature": "6356d6a5c789111affe93860305da3cae451be7f9fe06d99679d88a0cd9aefd4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/thumbnail.png new file mode 100644 index 0000000..3375b72 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/view.json new file mode 100644 index 0000000..d088376 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/view.json @@ -0,0 +1,640 @@ +{ + "custom": { + "alarm_message": null, + "color": "#C2C2C2", + "priority": "No Active Alarms", + "state": "Closed" + }, + "params": { + "angle": 0, + "directionLeft": false, + "tagProps": [ + "System/MCM01/Conveyor/VFD/UL1_3_VFD1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Color" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#C2C2C2" + }, + { + "input": 1, + "output": "#FF0000" + }, + { + "input": 2, + "output": "#FFA500" + }, + { + "input": 3, + "output": "#0008FF" + }, + { + "input": 4, + "output": "#00FF00" + }, + { + "input": 5, + "output": "#FFF700" + }, + { + "input": 6, + "output": "#87CEEB" + }, + { + "input": 7, + "output": "#90EE90" + }, + { + "input": 8, + "output": "#964B00" + }, + { + "input": 9, + "output": "#FFFFFF" + }, + { + "input": 10, + "output": "#000000" + }, + { + "input": 11, + "output": "#8B0000" + }, + { + "input": 12, + "output": "#808080" + }, + { + "input": 13, + "output": "#8B8000" + }, + { + "input": 14, + "output": "#006400" + }, + { + "input": 15, + "output": "#FFFFC5" + }, + { + "input": 16, + "output": "#00008B" + }, + { + "input": 17, + "output": "#FF7276" + }, + { + "input": 18, + "output": "#556B2F" + }, + { + "input": 19, + "output": "#B43434" + }, + { + "input": 20, + "output": "#4682B4" + }, + { + "input": 21, + "output": "#FFD700" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Priority" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "No Active Alarms" + }, + { + "input": 1, + "output": "High" + }, + { + "input": 2, + "output": "Medium" + }, + { + "input": 3, + "output": "Low" + }, + { + "input": 4, + "output": "Diagnostic" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/State" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Closed" + }, + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Communication Faulted" + }, + { + "input": 3, + "output": "Conveyor Running In Maintenance Mode" + }, + { + "input": 4, + "output": "Disabled" + }, + { + "input": 5, + "output": "Disconnected" + }, + { + "input": 6, + "output": "Stopped" + }, + { + "input": 7, + "output": "Enabled Not Running" + }, + { + "input": 8, + "output": "Encoder Fault" + }, + { + "input": 9, + "output": "Energy Management" + }, + { + "input": 10, + "output": "ESTOP Was Actuated" + }, + { + "input": 11, + "output": "EStopped" + }, + { + "input": 12, + "output": "EStopped Locally" + }, + { + "input": 13, + "output": "Extended Faulted" + }, + { + "input": 14, + "output": "Full" + }, + { + "input": 15, + "output": "Gaylord Start Pressed" + }, + { + "input": 16, + "output": "Jam Fault" + }, + { + "input": 17, + "output": "Jammed" + }, + { + "input": 18, + "output": "Loading Allowed" + }, + { + "input": 19, + "output": "Loading Not Allowed" + }, + { + "input": 20, + "output": "Low Air Pressure Fault Was Present" + }, + { + "input": 21, + "output": "Maintenance Mode" + }, + { + "input": 22, + "output": "Conveyor Stopped In Maintenance Mode" + }, + { + "input": 23, + "output": "Motor Faulted" + }, + { + "input": 24, + "output": "Motor Was Faulted" + }, + { + "input": 25, + "output": "Normal" + }, + { + "input": 26, + "output": "Off Inactive" + }, + { + "input": 27, + "output": "Open" + }, + { + "input": 28, + "output": "PLC Ready To Run" + }, + { + "input": 29, + "output": "Package Release Pressed" + }, + { + "input": 30, + "output": "Power Branch Was Faulted" + }, + { + "input": 31, + "output": "Pressed" + }, + { + "input": 32, + "output": "Ready To Receive" + }, + { + "input": 33, + "output": "Running" + }, + { + "input": 34, + "output": "Started" + }, + { + "input": 35, + "output": "Stopped" + }, + { + "input": 36, + "output": "System Started" + }, + { + "input": 37, + "output": "Unknown" + }, + { + "input": 38, + "output": "VFD Fault" + }, + { + "input": 39, + "output": "Conveyor Running In Power Saving Mode" + }, + { + "input": 40, + "output": "Conveyor Jogging In Maintenance Mode" + }, + { + "input": 41, + "output": "VFD Reset Required" + }, + { + "input": 42, + "output": "Jam Reset Push Button Pressed" + }, + { + "input": 43, + "output": "Start Push Button Pressed" + }, + { + "input": 44, + "output": "Stop Push Button Pressed" + }, + { + "input": 45, + "output": "No Container" + }, + { + "input": 46, + "output": "Ready To Be Enabled" + }, + { + "input": 47, + "output": "Half Full" + }, + { + "input": 48, + "output": "Enabled" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "params.angle": { + "paramDirection": "input", + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 29 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RunningStatus" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "if(({view.custom.display_icon} || ({view.custom.show_running} \u0026\u0026 !{view.custom.show_error})) \u0026\u0026 !{view.params.directionLeft}, True, False)" + }, + "enabled": false, + "type": "expr" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d \"Closed\",\r\n \"#000000\",\r\n {view.custom.color}\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.style.transform": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"\")", + "type": "expression" + }, + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scaleX(-1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "d": "M 5 15 L 45 15 L 60 25 L 60 55 L 20 55 L 5 45 Z M 5 15 L 15 5 L 55 5 L 60 25 M 45 15 L 55 5", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": "2" + }, + "type": "path" + } + ], + "style": { + "overflow": "hidden" + }, + "viewBox": "-1.5 -1.5 73 63" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-VFD\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "Alarms-Styles/High" + }, + { + "input": "Medium", + "output": "Alarms-Styles/Medium" + }, + { + "input": "Low", + "output": "Alarms-Styles/Low" + }, + { + "input": "Diagnostic", + "output": "Alarms-Styles/Diagnostic" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.state} !\u003d \"Closed\",\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority} + \", State: \" + {view.custom.state},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_running" + }, + "type": "property" + } + }, + "props.style.borderStyle": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "enabled": false, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "solid" + }, + { + "input": false, + "output": "none" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "justify": "center", + "style": { + "borderColor": "#FF0000", + "borderStyle": "none", + "borderWidth": "2px", + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/resource.json new file mode 100644 index 0000000..9f7fef4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "lastModificationSignature": "66fa7254b56edcce66920800609370b69db68cbf91702792726ad2d4c32b012c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/thumbnail.png new file mode 100644 index 0000000..1cd1d73 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/view.json new file mode 100644 index 0000000..aa4e9c6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/view.json @@ -0,0 +1,280 @@ +{ + "custom": {}, + "params": { + "Dataset": [ + { + "path": "Symbol-Views/Device-Views/DeviceStatus" + }, + { + "path": "Symbol-Views/Device-Views/DeviceStatus_old" + }, + { + "path": "Symbol-Views/Device-Views/Estop" + }, + { + "path": "Symbol-Views/Equipment-Views/ARSAW" + }, + { + "path": "Symbol-Views/Equipment-Views/AUS" + }, + { + "path": "Symbol-Views/Equipment-Views/Camera" + }, + { + "path": "Symbol-Views/Equipment-Views/ControlCabinet" + }, + { + "path": "Symbol-Views/Equipment-Views/Estop" + }, + { + "path": "Symbol-Views/Equipment-Views/GoodsLift" + }, + { + "path": "Symbol-Views/Equipment-Views/JAM" + }, + { + "path": "Symbol-Views/Equipment-Views/Light_Curtain" + }, + { + "path": "Symbol-Views/Equipment-Views/Main_Panel" + }, + { + "path": "Symbol-Views/Equipment-Views/Network" + }, + { + "path": "Symbol-Views/Equipment-Views/Pointer" + }, + { + "path": "Symbol-Views/Equipment-Views/PressureSwitch" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_End" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line" + }, + { + "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" + }, + { + "path": "Symbol-Views/Equipment-Views/RFID" + }, + { + "path": "Symbol-Views/Equipment-Views/Robot" + }, + { + "path": "Symbol-Views/Equipment-Views/SLAMs" + }, + { + "path": "Symbol-Views/Equipment-Views/SafetyGate" + }, + { + "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" + }, + { + "path": "Symbol-Views/Equipment-Views/Status" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered" + }, + { + "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/Status_NS" + }, + { + "path": "Symbol-Views/Equipment-Views/THEA" + }, + { + "path": "Symbol-Views/Equipment-Views/Test" + } + ], + "FilteredViews": [ + { + "Name": "DeviceStatus", + "Path": "Symbol-Views/Equipment-Views/DeviceStatus", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "Button", + "Path": "Symbol-Views/Equipment-Views/Button", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "Camera", + "Path": "Symbol-Views/Equipment-Views/Camera", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "ControlCabinet", + "Path": "Symbol-Views/Equipment-Views/ControlCabinet", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "Extendo", + "Path": "Symbol-Views/Equipment-Views/Extendo", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "MCM", + "Path": "Symbol-Views/Equipment-Views/MCM", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "SS_Button", + "Path": "Symbol-Views/Equipment-Views/SS_Button", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "PullChord", + "Path": "Symbol-Views/Equipment-Views/PullChord", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "PullChord_End", + "Path": "Symbol-Views/Equipment-Views/PullChord_End", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "PullChord_Line", + "Path": "Symbol-Views/Equipment-Views/PullChord_Line", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "THEA", + "Path": "Symbol-Views/Equipment-Views/THEA", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "Status", + "Path": "Symbol-Views/Equipment-Views/Status", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + }, + { + "Name": "StatusNonPowered", + "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", + "instancePosition": {}, + "instanceStyle": { + "classes": "" + } + } + ], + "SelectedValue": "", + "key": "" + }, + "propConfig": { + "params.Dataset": { + "paramDirection": "input", + "persistent": true + }, + "params.FilteredViews": { + "paramDirection": "input", + "persistent": true + }, + "params.SelectedValue": { + "paramDirection": "inout", + "persistent": true + }, + "params.key": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 650, + "width": 1165 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ViewRepeater" + }, + "position": { + "basis": "1px", + "grow": 1 + }, + "propConfig": { + "props.instances": { + "binding": { + "config": { + "bidirectional": true, + "path": "view.params.FilteredViews" + }, + "type": "property" + } + } + }, + "props": { + "alignContent": "flex-start", + "alignItems": "flex-start", + "elementPosition": { + "basis": "auto" + }, + "elementStyle": { + "classes": "Framework/Cards/Title" + }, + "justify": "center", + "path": "Symbol-Views/Symbol-Library-Views/Symbol", + "style": { + "gap": "20px", + "overflow": "hidden" + }, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "meta": { + "name": "root" + }, + "props": { + "alignItems": "center", + "justify": "space-evenly", + "wrap": "wrap" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/resource.json new file mode 100644 index 0000000..285813c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "22443a466c18dc2ae3518f9c5c08cc2cf88de5cc54d19a10bfc6a9dc1f73de16" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/thumbnail.png new file mode 100644 index 0000000..ef83536 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/view.json new file mode 100644 index 0000000..d1e6e65 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/view.json @@ -0,0 +1,155 @@ +{ + "custom": {}, + "params": { + "Name": "", + "Path": "", + "forceFault": null, + "forceRunning": null + }, + "propConfig": { + "params.Name": { + "binding": { + "config": { + "path": "view.params.Path" + }, + "transforms": [ + { + "code": "\tstring \u003d value \n\tparts \u003d string.split(\"/\")\n\td \u003d parts[-1]\n\treturn d\n\treturn value", + "type": "script" + } + ], + "type": "property" + }, + "paramDirection": "inout", + "persistent": true + }, + "params.Path": { + "paramDirection": "inout", + "persistent": true + }, + "params.forceFault": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunning": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 131, + "width": 120 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EmbeddedView", + "tooltip": {} + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "path": "view.params.Path" + }, + "type": "property" + } + }, + "props.params.forceFaultStatus": { + "binding": { + "config": { + "path": "view.params.forceFault" + }, + "type": "property" + } + }, + "props.params.forceRunningStatus": { + "binding": { + "config": { + "path": "view.params.forceRunning" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "path": "view.params.Path" + }, + "type": "property" + } + } + }, + "props": { + "key": "value", + "style": { + "height": "80px", + "pointerEvents": "none", + "width": "80px" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "1px", + "grow": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.Name" + }, + "type": "property" + } + } + }, + "props": { + "alignVertical": "top", + "textStyle": { + "fontSize": 8, + "overflowWrap": "break-word", + "textAlign": "center", + "textOverflow": "ellipsis" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\t# Send message for and print on system the selected path. \n\tparams \u003d {\u0027UserClickPath\u0027: self.view.params.Path, \u0027UserClickSymbolName\u0027 : self.view.params.Name}\n\tsystem.perspective.sendMessage(\"UserClickInfo\", payload \u003d params, scope \u003d \"page\")\n\tsystem.perspective.print(params)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "alignItems": "center", + "direction": "column", + "justify": "center", + "style": { + "classes": "Background-Styles/Grey-Background", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/data.bin new file mode 100644 index 0000000..399a4f7 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/data.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/resource.json new file mode 100644 index 0000000..eca335d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "C", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2021-10-25T07:43:53Z" + }, + "lastModificationSignature": "9507094e62bcbd4b5c0d3a9ca915ea0954abe4004aa32cbc6a7d373cbe6de012" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/data.bin new file mode 100644 index 0000000..ac02e3d Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/data.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/resource.json new file mode 100644 index 0000000..b7da9ba --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "C", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2021-11-24T13:55:44Z" + }, + "lastModificationSignature": "0066d6e08e8bb4a7b4004ff036e1cc20059cb343100f6663306727267350e4a6" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/data.bin new file mode 100644 index 0000000..460c28f Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/data.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/resource.json new file mode 100644 index 0000000..fb615cf --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "C", + "documentation": "", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2022-03-28T14:21:52Z" + }, + "lastModificationSignature": "5ae3323c4a58d2268bd5df7bbdbae9a7f0836d6d2918471fafd90f03a5499b26" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/resource.json new file mode 100644 index 0000000..101668d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "C", + "documentation": "", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "template.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2022-03-28T16:42:16Z" + }, + "lastModificationSignature": "873318c449bc056ca3ea412c1226358696a9df9888362c23cfda3cd08dd41551" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/template.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/template.bin new file mode 100644 index 0000000..6e5394b Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/template.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/data.bin new file mode 100644 index 0000000..56ba51e Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/data.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/resource.json new file mode 100644 index 0000000..01766c6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "iama", + "timestamp": "2024-04-11T17:40:08Z" + }, + "lastModificationSignature": "d844fab616a878fd8472c4b6f0bc0a0433de7e0404dc64629a56773ccb66ab63" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/query.sql b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/query.sql new file mode 100644 index 0000000..7538ec6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/query.sql @@ -0,0 +1,62 @@ +SELECT + Active.id AS ID, + Active.eventtime AS StartTimestamp, + NULL AS EndTimestamp, -- still active + CONCAT( + LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':', + LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':', + LPAD(Active.duration_seconds % 60, 2, '0') + ) AS Duration, + CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description, + CASE Active.priority + WHEN 0 THEN 'Diagnostic' + WHEN 1 THEN 'Low' + WHEN 2 THEN 'Medium' + WHEN 3 THEN 'High' + WHEN 4 THEN 'Critical' + ELSE 'Unknown' + END AS Priority, + CONCAT( + Active.displaypath, + '.HMI.', + SUBSTRING_INDEX(aed.strValue, '/', -1) + ) AS Tag, + SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location, + aed.strValue AS FullTag, + Active.displaypath as Device +FROM +( + SELECT + ae.id, + ae.eventtime, + ae.eventid, + ae.source, + ae.priority, + ae.displaypath, + TIMESTAMPDIFF(SECOND, ae.eventtime, NOW()) AS duration_seconds + FROM alarm_events ae + WHERE ae.eventtype = 0 + AND NOT EXISTS ( + SELECT 1 + FROM alarm_events ae_clear + WHERE ae_clear.eventid = ae.eventid + AND ae_clear.eventtype = 1 + ) + AND ae.displaypath NOT LIKE '%System Startup%' + AND ae.source NOT LIKE '%System Startup%' + AND ( + :priorityList IS NULL + OR :priorityList = '' + OR FIND_IN_SET(ae.priority, :priorityList) > 0 + ) + GROUP BY ae.id +) AS Active +LEFT JOIN +( + SELECT aed.id, aed.strValue + FROM alarm_event_data aed + WHERE aed.propname = 'myTag' + GROUP BY aed.id +) AS aed + ON aed.id = Active.id +ORDER BY Active.eventtime DESC; diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/resource.json new file mode 100644 index 0000000..3492fd4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/resource.json @@ -0,0 +1,40 @@ +{ + "scope": "DG", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "query.sql" + ], + "attributes": { + "useMaxReturnSize": false, + "autoBatchEnabled": false, + "fallbackValue": "", + "maxReturnSize": 100, + "cacheUnit": "SEC", + "type": "Query", + "enabled": true, + "cacheAmount": 1, + "cacheEnabled": false, + "database": "MariaDB", + "fallbackEnabled": false, + "lastModificationSignature": "5c7fadf92a1d0c90593dbed06c92d34b1e8d886c9ab83c7c66394d18f274cb68", + "permissions": [ + { + "zone": "default", + "role": "" + } + ], + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "parameters": [ + { + "type": "Parameter", + "identifier": "priorityList", + "sqlType": 7 + } + ] + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/query.sql b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/query.sql new file mode 100644 index 0000000..d8872f4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/query.sql @@ -0,0 +1,33 @@ +SELECT + SUBSTRING_INDEX(SUBSTRING_INDEX(strValue, '/', 2), '/', -1) AS Location, + CASE priority + WHEN 0 THEN 'Diagnostic' + WHEN 1 THEN 'Low' + WHEN 2 THEN 'Medium' + WHEN 3 THEN 'High' + WHEN 4 THEN 'Critical' + ELSE 'Unknown' + END AS Priority, + COUNT(*) AS Count +FROM ( + SELECT + ae.id, + ae.eventid, + ae.priority, + aed.strValue + FROM alarm_events ae + LEFT JOIN alarm_event_data aed + ON ae.id = aed.id + AND aed.propname = 'myTag' + WHERE ae.eventtype = 0 + AND NOT EXISTS ( + SELECT 1 + FROM alarm_events ae_clear + WHERE ae_clear.eventid = ae.eventid + AND ae_clear.eventtype = 1 + ) + AND ae.displaypath NOT LIKE '%System Startup%' + AND ae.source NOT LIKE '%System Startup%' +) AS Active +GROUP BY Location, Priority +ORDER BY Location, Priority; diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/resource.json new file mode 100644 index 0000000..c048570 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/resource.json @@ -0,0 +1,33 @@ +{ + "scope": "DG", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "query.sql" + ], + "attributes": { + "useMaxReturnSize": false, + "autoBatchEnabled": false, + "fallbackValue": "", + "maxReturnSize": 100, + "cacheUnit": "SEC", + "type": "Query", + "enabled": true, + "cacheAmount": 1, + "cacheEnabled": false, + "database": "MariaDB", + "fallbackEnabled": false, + "lastModificationSignature": "026720cd08bb3d397dcec7961299bee30a544957fe637fcfc0f618f0cdf9f78d", + "permissions": [ + { + "zone": "default", + "role": "" + } + ], + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/query.sql b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/query.sql new file mode 100644 index 0000000..aaea1b4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/query.sql @@ -0,0 +1,67 @@ +SELECT + Active.id AS ID, + Active.eventtime AS StartTimestamp, + Clear.eventtime AS EndTimestamp, + + CONCAT( + LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':', + LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':', + LPAD(Active.duration_seconds % 60, 2, '0') + ) AS Duration, + + CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description, + + CASE Active.priority + WHEN 0 THEN 'Diagnostic' + WHEN 1 THEN 'Low' + WHEN 2 THEN 'Medium' + WHEN 3 THEN 'High' + WHEN 4 THEN 'Critical' + ELSE 'Unknown' + END AS Priority, + + CONCAT( + Active.displaypath, + '.HMI.', + SUBSTRING_INDEX(aed.strValue, '/', -1) + ) AS Tag, + + SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location, aed.strValue AS FullTag, + Active.displaypath AS Device + +FROM ( + SELECT + ae.id, + ae.eventtime, + ae.eventid, + ae.source, + ae.priority, + ae.displaypath, + TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds + FROM alarm_events ae + LEFT JOIN alarm_events ae_clear + ON ae.eventid = ae_clear.eventid + AND ae_clear.eventtype = 1 + WHERE ae.eventtype = 0 + AND ae.displaypath NOT LIKE '%System Startup%' + AND ae.source NOT LIKE '%System Startup%' + GROUP BY ae.id +) AS Active + +LEFT JOIN ( + SELECT eventid, MIN(eventtime) AS eventtime + FROM alarm_events + WHERE eventtype = 1 + GROUP BY eventid +) AS Clear + ON Active.eventid = Clear.eventid + +LEFT JOIN ( + SELECT aed.id, aed.strValue + FROM alarm_event_data aed + WHERE aed.propname = 'myTag' + GROUP BY aed.id +) AS aed + ON aed.id = Active.id + +ORDER BY Active.eventtime DESC; \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/resource.json new file mode 100644 index 0000000..dd3b248 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/resource.json @@ -0,0 +1,33 @@ +{ + "scope": "DG", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "query.sql" + ], + "attributes": { + "useMaxReturnSize": false, + "autoBatchEnabled": false, + "fallbackValue": "", + "maxReturnSize": 100, + "cacheUnit": "SEC", + "type": "Query", + "enabled": true, + "cacheAmount": 1, + "cacheEnabled": false, + "database": "MariaDB", + "fallbackEnabled": false, + "lastModificationSignature": "507520d0118d19108d0633db681b6f31a209adbc81fac819b03ad3c3e46b5a41", + "permissions": [ + { + "zone": "default", + "role": "" + } + ], + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/query.sql b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/query.sql new file mode 100644 index 0000000..e4db936 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/query.sql @@ -0,0 +1,63 @@ +SELECT + CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description, + + SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location, + + CONCAT( + Active.displaypath, + '.HMI.', + SUBSTRING_INDEX(aed.strValue, '/', -1) + ) AS Tag, + + CASE Active.priority + WHEN 0 THEN 'Diagnostic' + WHEN 1 THEN 'Low' + WHEN 2 THEN 'Medium' + WHEN 3 THEN 'High' + WHEN 4 THEN 'Critical' + ELSE 'Unknown' + END AS Priority, + + -- First and last seen times for this alarm + MIN(Active.eventtime) AS FirstTimestamp, + MAX(Active.eventtime) AS LastTimestamp, + + -- Total duration summed from each active-clear pair + CONCAT( + LPAD(FLOOR(SUM(Active.duration_seconds) / 3600), 2, '0'), ':', + LPAD(FLOOR((SUM(Active.duration_seconds) % 3600) / 60), 2, '0'), ':', + LPAD(SUM(Active.duration_seconds) % 60, 2, '0') + ) AS Duration, + + -- Total number of activations + COUNT(*) AS Count, + + -- Newly added columns + aed.strValue AS FullTag, + Active.displaypath AS Device + +FROM ( + SELECT + ae.id, + ae.source, + ae.eventid, + ae.eventtime, + ae.priority, + ae.displaypath, + TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds + FROM alarm_events ae + LEFT JOIN alarm_events ae_clear + ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1 + WHERE ae.eventtype = 0 + AND ae.displaypath NOT LIKE '%System Startup%' + AND ae.source NOT LIKE '%System Startup%' +) AS Active + +-- OPC tag path for building .hmi.Tag output +LEFT JOIN alarm_event_data aed + ON aed.id = Active.id AND aed.propname = 'myTag' + +-- 🔹 Group by the full unique alarm key (tag + alarm name) +GROUP BY Active.source, Active.displaypath, aed.strValue + +ORDER BY FirstTimestamp DESC; diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json new file mode 100644 index 0000000..e281572 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json @@ -0,0 +1,33 @@ +{ + "scope": "DG", + "version": 2, + "restricted": false, + "overridable": true, + "files": [ + "query.sql" + ], + "attributes": { + "useMaxReturnSize": false, + "autoBatchEnabled": false, + "fallbackValue": "", + "maxReturnSize": 100, + "cacheUnit": "SEC", + "type": "Query", + "enabled": true, + "cacheAmount": 1, + "cacheEnabled": false, + "database": "MariaDB", + "fallbackEnabled": false, + "lastModificationSignature": "c4930359917a56cbde7cf358c14c2d23a6c58d832a22e62509c0775d72ef847e", + "permissions": [ + { + "zone": "default", + "role": "" + } + ], + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + } + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/data.bin b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/data.bin new file mode 100644 index 0000000..512c672 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/data.bin differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/resource.json new file mode 100644 index 0000000..40d0178 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "DG", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "data.bin" + ], + "attributes": { + "lastModification": { + "actor": "pllincol", + "timestamp": "2021-11-22T21:28:09Z" + }, + "lastModificationSignature": "1ce3d225e5a61a7b05dd7cfcd3611afd76f98520e6f3703ff149bc48304938d3" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py new file mode 100644 index 0000000..8f2274d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py @@ -0,0 +1,99 @@ +import datetime +import hashlib +import hmac + +try: + from urllib.parse import quote_plus +except ImportError: + from urllib import quote_plus + + +def sign(key, msg): + return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() + + +def getSignatureKey(key, dateStamp, regionName, serviceName): + kDate = sign(("AWS4" + key).encode("utf-8"), dateStamp) + kRegion = sign(kDate, regionName) + kService = sign(kRegion, serviceName) + kSigning = sign(kService, "aws4_request") + return kSigning + + +def build_querystring(access_key, session_key, algorithm, amz_date, credential_scope): + query_strings = { + "X-Amz-Algorithm": algorithm, + "X-Amz-Credential": quote_plus(access_key + "/" + credential_scope), + "X-Amz-Date": amz_date, + #"X-Amz-Security-Token": quote_plus(session_key), + "X-Amz-SignedHeaders": "host", + } + keys = list(query_strings.keys()) + keys.sort() + query = [] + for key in keys: + query.append("{}={}".format(key, query_strings[key])) + + canonical_query_string = "&".join( + query + #["{}={}".format(key, value) for key, value in query_strings.items()] + ) + return canonical_query_string + + +def make_websocket_connection(api_id, region, stage, credentials): + method = "GET" + service = "execute-api" + host = "{}.{}.{}.amazonaws.com".format(api_id, service, region) + canonical_uri = "/{}".format(stage) + access_key = credentials["AccessKey"] + secret_key = credentials["SecretKey"] + session_key = credentials["SessionKey"] + now = datetime.datetime.utcnow() + + amz_date = now.strftime("%Y%m%dT%H%M%SZ") + datestamp = now.strftime("%Y%m%d") + canonical_headers = "host:" + host + "\n" + signed_headers = "host" + algorithm = "AWS4-HMAC-SHA256" + credential_scope = "/".join([datestamp, region, service, "aws4_request"]) + + canonical_querystring = build_querystring( + access_key, session_key, algorithm, amz_date, credential_scope + ) + payload_hash = hashlib.sha256(("").encode("utf-8")).hexdigest() + canonical_request = "\n".join( + [ + method, + canonical_uri, + "", + #canonical_querystring, + canonical_headers, + signed_headers, + payload_hash, + ] + ) + string_to_sign = "\n".join( + [ + algorithm, + amz_date, + credential_scope, + hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), + ] + ) + signing_key = getSignatureKey(secret_key, datestamp, region, service) + signature = hmac.new( + signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 + ).hexdigest() + canonical_querystring += "&X-Amz-Signature=" + signature + request_url = "wss://{}/{}".format(host, stage) + auth_header = algorithm + " Credential=" + access_key + "/" + credential_scope + ", SignedHeaders=" + signed_headers + ", Signature=" + signature + #print('-H "Authorization":"' + auth_header +'" -H "X-Amz-Date":"' + amz_date + '" -H "X-Amz-Security-Token":"' + session_key + '" ') + request_headers = { + "Authorization":auth_header, + "X-Amz-Date": amz_date, + "X-Amz-Security-Token": session_key + } + return request_url, request_headers + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json new file mode 100644 index 0000000..bf46cf4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "24d48cbea3455933af9cfefa3dd16ab726e8e6b3c0f39f95955051512c10c553", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/code.py new file mode 100644 index 0000000..1503a50 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/code.py @@ -0,0 +1,293 @@ +import sys, os, datetime, hashlib, hmac +from StringIO import StringIO +import gzip +import urllib +import urllib2 +import json + +def get_filters_2(**kwargs): + filter_stack = [] + canonical_querystring = "" + url_encoding = kwargs.get("url_encoding") + + sources = kwargs.get("sources") + if sources: + source_string = "SourceId=" + ",".join(sources) + filter_stack.append(source_string) + + devices = kwargs.get("devices") + if devices: + device_string = "Device=" + ",".join(devices) + filter_stack.append(device_string) + + priorities = kwargs.get("priorities") + if priorities: + priority_string = "Priority=" + ",".join(str(item) for item in priorities) + filter_stack.append(priority_string) + + types = kwargs.get("types") + if types: + type_string = ("Type=" + ",".join(str(item) for item in types)) + filter_stack.append(type_string) + + time_from = kwargs.get("start") + if time_from: + time_from_string = "StartTimestamp=" + str(time_from) + filter_stack.append(time_from_string) + + time_to = kwargs.get("end") + if time_to: + time_to_string = "EndTimestamp=" + str(time_to) + filter_stack.append(time_to_string) + + duration = kwargs.get("duration") + if duration: + duration_string = "MinimumDuration=" + str(duration) + filter_stack.append(duration_string) + if filter_stack: + if url_encoding: + canonical_querystring += "Filter=" + for i, j in enumerate(filter_stack): + if i == len(filter_stack)-1 and url_encoding == True: + canonical_querystring += urllib.quote(j, "") + elif i == len(filter_stack)-1: + canonical_querystring += j + elif url_encoding == True: + canonical_querystring += urllib.quote(j + "&", "") + else: + canonical_querystring += (j + "&") + + return canonical_querystring + +def get_filters(**kwargs): + #Build filter string, filters are passed as key word arguments into the function + #Check if any of the filters have been passed means we need to add Filter=. + #Each filter is then converted using the urllib_parse. + canonical_querystring = "" + sources = kwargs.get("sources") + devices = kwargs.get("devices") + priorities = kwargs.get("priorities") + types = kwargs.get("types") + time_from = kwargs.get("start") + time_to = kwargs.get("end") + duration = kwargs.get("duration") + url_encoding = kwargs.get("url_encoding") + filter_list = [sources, devices, priorities, types, time_from, time_to, duration] + if any(filter_list): + canonical_querystring = "Filter=" + if sources: + source_string = ("SourceId=" + ",".join(sources)) + if url_encoding == True: + canonical_querystring += urllib.quote(source_string + "&","") + else: + canonical_querystring += source_string + "&" + if devices: + device_string = ("Device=" + ",".join(devices)) + if url_encoding == True: + canonical_querystring += urllib.quote(device_string + "&","") + else: + canonical_querystring += device_string +"&" + if priorities: + priority_string = ("Priority=" + ",".join(str(item) for item in priorities)) + if url_encoding == True: + canonical_querystring += urllib.quote(priority_string + "&", "") + else: + canonical_querystring += priority_string +"&" + if types: + type_string = ("Type=" + ",".join(str(item) for item in types)) + if url_encoding == True: + canonical_querystring += urllib.quote(type_string + "&","") + else: + canonical_querystring += type_string +"&" + if time_from: + if url_encoding == True: + canonical_querystring += urllib.quote("StartTimestamp=" + str(time_from) + "&","") + else: + canonical_querystring += "StartTimestamp=" + str(time_from) +"&" + if time_to: + if url_encoding == True: + canonical_querystring += urllib.quote("EndTimestamp=" + str(time_to) + "&","") + else: + canonical_querystring += "EndTimestamp=" + str(time_to) +"&" + if duration: + if url_encoding == True: + canonical_querystring += urllib.quote("MinimumDuration=" + str(duration) + "&","") + else: + canonical_querystring += "MinimumDuration=" + str(duration) +"&" + system.perspective.print("filtered string = " + canonical_querystring ) + canonical_querystring = canonical_querystring.rstrip("&") + return canonical_querystring + +def get_response(response): + if response.info().get('Content-Encoding') == 'gzip': + buf = StringIO(response.read()) + f = gzip.GzipFile(fileobj=buf) + data = f.read() + return (response.getcode(), data) + else: + buf = StringIO(response.read()) + return(response.getcode(), buf.read()) + +def build_url(credentials, **kwargs): + # ************* REQUEST VALUES ************* + method = 'GET' + service = 'lambda' + + # This is a lookup in secrets to a return the function url for the lambda that needs called. + # This allows beta and prod to be dynamically retrived. + whid = kwargs.get("fc") + region = kwargs.get("region") + API_ID, STAGE, ACC_ID, FUNC_URL = AWS.secrets_manager.get_secret(str(whid), 'scada/api/endpoint') + api_id = FUNC_URL + host = "%s.%s-url.%s.on.aws" % (api_id, service, region) + endpoint = "https://%s" % (host) + + + # Key derivation functions. See: + # http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-python + def sign(key, msg): + return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest() + + def getSignatureKey(key, dateStamp, regionName, serviceName): + kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp) + kRegion = sign(kDate, regionName) + kService = sign(kRegion, serviceName) + kSigning = sign(kService, 'aws4_request') + return kSigning + + # Read AWS access key from env. variables or configuration file. Best practice is NOT + # to embed credentials in code. +# access_key = os.environ.get('AWS_ACCESS_KEY_ID') +# access_key= 'ASIATVSVCYSV2JJJMDPP' +# secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY') +# secret_key= 'Hc0G/0eACBlgplGSBnfsB98Y6DPqwpvyb4nc1Rvs' +# session_token = os.environ["AWS_SESSION_TOKEN"] +# session_token= 'IQoJb3JpZ2luX2VjEJr//////////wEaCWV1LXdlc3QtMSJHMEUCIQCbrPQoj4OM0SXIo6QtcNAblnplgXfvSYIcA+k8xkXmZwIgN1Pi7Nyc66T8p0HkZSMmuW8pu1qPEVJii41YgYCuiBYqngIIo///////////ARAAGgwyNTI1MDc3Njc5NzkiDKGV69tLNcKNVcoeryryARkU2Lmnj0aa+ilLOrg35FIb81jvmj6bpPR3+5zJ3Wna+vOBgz6cqphyn28+Q8Ryw/lzM6gM0vWH+gV26CuQZtKd1U4ETo9eL9QuluLBqLnZYfT5q+F9hzJy3OQQl0c3VvwcaCjOPrMdbvWnJGEoEZTKe7Xm5v3ok3huJDgKLEIVlE6Z4c2kKNy/N/JfbxB5a33A2eaE9YaGj1V0cQgUFCCkn9uDq8W4TzOPZ3NgKAyj8RoBR6KAC8gEtWXFEwwZR3ZMwYIXryEepcU7HQSHpp66JAFm/X5+HNxRe7WUwTETAveYMNi5ssFzl3rneKh9+U37MPW58psGOp0B11BghSma0KZHgCfXqdsgfGyD7/sBEyYE9wdnzmi8fOpel5EDQoUoYilRSXod2E9wlaXj3h8S+dtBJjGVqsIbHEIrW7WKOEYELxoW4VSDw5hDjZaUuZ5fA3z59c4CEeAz3v5EA6NN6+ulEb7/4pbWF8s3fezNk9T73NpmKnjaMFukcBX8DofesZGJFpfGij2Sx4hQ3qlmG91uac8kMw==' + access_key = credentials["AccessKey"] + secret_key = credentials["SecretKey"] + session_token = credentials["SessionKey"] + + + + if access_key is None or secret_key is None: + system.perspective.print('No access key is available.') + sys.exit() + + # Create a date for headers and the credential string + t = datetime.datetime.utcnow() + amz_date = t.strftime('%Y%m%dT%H%M%SZ') # Format date as YYYYMMDD'T'HHMMSS'Z' + datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope + system.perspective.print("creating header") + system.perspective.print("datestamp = " + str(datestamp) + " region = " + str(region) + "service = " + str(service)) + + # ************* TASK 1: CREATE A CANONICAL REQUEST ************* + # http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + + # Because almost all information is being passed in the query string, + # the order of these steps is slightly different than examples that + # use an authorization header. + + # Step 1: Define the verb (GET, POST, etc.)--already done. + + # Step 2: Create canonical URI--the part of the URI from domain to query + # string (use '/' if no path) + fc = kwargs.get("fc") + canonical_uri = "/history/%s" % (fc) + + # Step 3: Create the canonical headers and signed headers. Header names + # must be trimmed and lowercase, and sorted in code point order from + # low to high. Note trailing \n in canonical_headers. + # signed_headers is the list of headers that are being included + # as part of the signing process. For requests that use query strings, + # only "host" is included in the signed headers. + canonical_headers = 'host:' + host + '\n' + signed_headers = 'host' + + # Match the algorithm to the hashing algorithm you use, either SHA-1 or + # SHA-256 (recommended) + algorithm = 'AWS4-HMAC-SHA256' + + credential_scope = datestamp + '/' + region + '/' + service + '/' + 'aws4_request' + + # Step 4: Create the canonical query string. In this example, request + # parameters are in the query string. Query string values must + # be URL-encoded (space=%20). The parameters must be sorted by name. + #canonical_querystring = 'Action=CreateUser&UserName=NewUser&Version=2010-05-08' + #canonical_querystring = 'NextToken=' + urllib.parse.quote("1669217267.5230844/PLC09/T00049",'') + '&PageSize=50' + #canonical_querystring = 'PageSize=50&PreviousToken=' + urllib.parse.quote('1669217267.5824845/PLC09/T00099','') + canonical_querystring = "" + #Build filter string, filters are passed as key word arguments int the function + #Check if any of the filters have been passed means we need to add Filter=. + #Each filter is then converted using the urllib_parse. + #Including client id for timestream api. + client_id = kwargs.get("client_id") + if client_id: + canonical_querystring += 'ClientId=' + client_id + '&' + PAGE_SIZE = "200" + filters= kwargs.get("filters","") + if filters != "": + canonical_querystring += filters + "&" + + next_token = kwargs.get("next_token") + + previous_token = kwargs.get("previous_token") + if next_token != None: + canonical_querystring += 'NextToken=' + urllib.quote(next_token,'') + '&' + system.perspective.print("created string " + canonical_querystring) + + if previous_token != None: + canonical_querystring += 'PreviousToken=' + urllib.quote(previous_token,'') + '&' + + else: + canonical_querystring += 'X-Amz-Algorithm=AWS4-HMAC-SHA256' + canonical_querystring += '&X-Amz-Credential=' + urllib.quote_plus(access_key + '/' + credential_scope) + canonical_querystring += '&X-Amz-Date=' + amz_date + #canonical_querystring += '&X-Amz-Expires=30' + canonical_querystring += "&X-Amz-Security-Token=" + urllib.quote_plus(session_token) + canonical_querystring += '&X-Amz-SignedHeaders=' + signed_headers + + + # Step 5: Create payload hash. For GET requests, the payload is an + # empty string (""). + payload_hash = hashlib.sha256(('').encode('utf-8')).hexdigest() + + # Step 6: Combine elements to create canonical request + canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash + + + # ************* TASK 2: CREATE THE STRING TO SIGN************* + string_to_sign = algorithm + '\n' + amz_date + '\n' + credential_scope + '\n' + hashlib.sha256(canonical_request.encode('utf-8')).hexdigest() + + # ************* TASK 3: CALCULATE THE SIGNATURE ************* + # Create the signing key + signing_key = getSignatureKey(secret_key, datestamp, region, service) + + # Sign the string_to_sign using the signing_key + signature = hmac.new(signing_key, (string_to_sign).encode("utf-8"), hashlib.sha256).hexdigest() + + + # ************* TASK 4: ADD SIGNING INFORMATION TO THE REQUEST ************* + # The auth information can be either in a query string + # value or in a header named Authorization. This code shows how to put + # everything into a query string. + canonical_querystring += '&X-Amz-Signature=' + signature + + + # ************* SEND THE REQUEST ************* + # The 'host' header is added automatically by the Python 'request' lib. But it + # must exist as a header in the request. + request_url = endpoint + canonical_uri + "?" + canonical_querystring + + system.perspective.print('\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++') + system.perspective.print('Request URL = ' + request_url) +# r = requests.get(request_url) + request = urllib2.Request(request_url) + request.add_header('Accept-encoding', 'gzip') + try: + response = urllib2.urlopen(request) + except urllib2.HTTPError as e: + return(e.code, None) + except urllib2.URLError as e: + return(e.reason, None) + return get_response(response) + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/resource.json new file mode 100644 index 0000000..26d229b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "62f64537d373f16503b50a3966df935792e83579b3b8a6f49a228d99e7ca6aa8", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/code.py new file mode 100644 index 0000000..60cc4c5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/code.py @@ -0,0 +1,31 @@ +def create_web_socket_tags(whid): + + logger = system.util.getLogger("%s-Create-Web-Socket-Tags" % (whid)) + if whid != "" and whid != None: + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + tag_paths = {"aws_data":{"name":"aws_data", "valueSource": "memory", + "dataType": "String", "value" : "{}"}, + "close_socket":{"name":"close_socket", "valueSource": "memory", + "dataType": "Boolean", "value" : True}, + "device_count":{"name":"device_count", "valueSource": "memory", + "dataType": "String", "value" : "{}"}, + "IdToStatus":{"name":"IdToStatus", "valueSource": "memory", + "dataType": "String", "value" : "{}"}, + "wbsckt_heartbeat_interval":{"name":"wbsckt_heartbeat_interval", "valueSource": "memory", + "dataType": "DateTime", "value" : 0}, + "wbsckt_logging":{"name":"wbsckt_logging", "valueSource": "memory", + "dataType": "Boolean", "value" : False}, + "wbsckt_messages_send":{"name":"wbsckt_messages_send", "valueSource": "memory", + "dataType": "String", "value" : "{}"}, + "thread_id":{"name":"thread_id", "valueSource": "memory", + "dataType": "String", "value" : ""}, + "wbsckt_running":{"name":"wbsckt_running", "valueSource": "memory", + "dataType": "Boolean", "value" : False}, + "download":{"name":"download", "valueSource": "memory", + "dataType": "String", "value" : ""}} + + for k,v in tag_paths.items(): + if not system.tag.exists("%sSystem/%s" % (provider, k)): + base_path = "%s/System" % (provider) + system.tag.configure(base_path, v) + logger.info("Created tag %s" % (k)) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/resource.json new file mode 100644 index 0000000..66e2ebf --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "73d5a3d279a5b89490183e379c0283c39d921a0710d010dbed89fcbc879d3960", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py new file mode 100644 index 0000000..018e3d1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py @@ -0,0 +1,53 @@ +import com.amazonaws.auth.profile.ProfileCredentialsProvider as ProfileCredentialsProvider +import com.amazonaws.services.securitytoken.AWSSecurityTokenService as AWSSecurityTokenService +import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder as AWSSecurityTokenServiceClientBuilder +import com.amazonaws.auth.AWSStaticCredentialsProvider as AWSStaticCredentialsProvider +import com.amazonaws.services.securitytoken.model.GetCallerIdentityRequest as GetCallerIdentityRequest +import com.amazonaws.services.securitytoken.model.AssumeRoleRequest as AssumeRoleRequest + +class GetCredentials(): + ''' + Gets aws credentials for the provided path and region. + + ''' + + def __init__(self, path, profile, region): + self.path = path + self.profile = profile + self.region = region + self.credentials = self.get_credentials() + + def get_credentials(self): + '''Gets the credentials for the AWS account which the s3 bucket is in. + + Args: + + Returns: + credentials : The aws credentials for a given profile stored on the server. + ''' + credentials = ProfileCredentialsProvider(self.path, self.profile).getCredentials() + return credentials + +def assume_role(**kwargs): + aws_credentials_file_path = kwargs.get("credentials_file_path") + aws_profile_name = kwargs.get("profile_name") + aws_region = kwargs.get("region") + aws_arn = kwargs.get("arn") + aws_api_id = kwargs.get("api_id") + aws_stage = kwargs.get("stage") + aws_arn_role = kwargs.get("arn_role") + arn_role = "arn:aws:iam::%s:role/client-api-access-role" % (aws_arn) + #Query the credentials on the ec2 instance, they are found at CREDENTIALS_FILE_PATH +# aws = AWS.credentials.GetCredentials(aws_credentials_file_path, aws_profile_name, aws_region ) +# aws_creds = aws.get_credentials() + sts_client = AWSSecurityTokenServiceClientBuilder.standard().build() + identity_request = GetCallerIdentityRequest() + identity = sts_client.getCallerIdentity(identity_request) + assumeRoleRequest = AssumeRoleRequest().withRoleArn(arn_role).withRoleSessionName("Ignition8"); + response = sts_client.assumeRole(assumeRoleRequest); + session_creds = response.getCredentials(); + access_key = session_creds.getAccessKeyId() + secret_key = session_creds.getSecretAccessKey() + session_token = session_creds.getSessionToken() + credentials = {"AccessKey":access_key, "SecretKey":secret_key, "SessionKey":session_token} + return credentials diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json new file mode 100644 index 0000000..da6028d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8a80ab8c2fc67942ab7a60deb283a45ebc7a742bd7b72194abb43235d5cf6a04", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/code.py new file mode 100644 index 0000000..f84957e --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/code.py @@ -0,0 +1,11 @@ +import sys + +def error_handler(whid, logger_name): + logger_name = "%s-%s" % (whid, logger_name) + logger = system.util.getLogger(logger_name) + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + exc_type, exc_obj, tb = sys.exc_info() + lineno = tb.tb_lineno + logger.error("Error: %s, %s, %s" % (lineno, exc_type, exc_obj)) + system.tag.writeBlocking([provider + "System/wbsckt_running"], [0]) + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/resource.json new file mode 100644 index 0000000..6bd9929 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "d9091e2653ef3dfc5828c6326ec7b4315040986dcdcf2ad2a81e530180fa0331" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/code.py new file mode 100644 index 0000000..32b4840 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/code.py @@ -0,0 +1,16 @@ +def check_heartbeat(tag_provider, timeout): + current_time = system.date.now() + tag_path = "%sSystem/wbsckt_heartbeat_interval" % (tag_provider) + tag_to_read = system.tag.readBlocking([tag_path]) + heartbeat = tag_to_read[0].value + time_diff = system.date.secondsBetween(heartbeat, current_time) + if time_diff > timeout: + return True + else: + return False + + +def get_heartbeat(provider): + tag_to_write = "%sSystem/wbsckt_heartbeat_interval" % (provider) + current_time = system.date.now() + system.tag.writeAsync([tag_to_write], [current_time]) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/resource.json new file mode 100644 index 0000000..d2c2183 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2a709429de77dabae0d44ff020420e64d9e71c5366e1a036dd3f9b766191b5aa", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/code.py new file mode 100644 index 0000000..56654e5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/code.py @@ -0,0 +1,302 @@ +from datetime import datetime +import Queue +import copy + +"""Global variables required so we can use different event timer scripts to perform +the writing of tag values seperateley from the reading of messages on the web socket. +State tags messages are queued into the global_queue, where they are read on a different +thread by the Update class and writen to tags. All alarms are written to global_alarms. +The alarms are then read by the Visualisation.status class where they are transformed into +an alarm state and written to tags. """ + +global_alarms = {} +global_states = set([]) +global_queue = Queue.Queue(maxsize=100000) +global_first_connect = False + + +class A2C_MessageHandler(): + """ + Handles the incoming A2C messages. Stores values in memory as dictionaries + and then writes them to tags. + + Instance Attributes: + self.alarms: Holds the current active alarm data(dict). + self.state: Holds the current active state data(dict). + self.update_state: Flag, set when state data is available to write(bool) + self.update_alarms: Flag, set when alarm data is available to write(bool) + self.whid: Warehouse id for the site(str) + self.tag_provider: Tag provider to write tag values to(str) + self.A2C_MESSAGE_TYPES: Holds a reference to the methods called + for different message types(dict) + + Returns: + NA. + + Raises: + KeyError: NA. + """ + def __init__(self, whid): + global global_alarms + global global_first_connect + global_first_connect = False + global_alarms = {} + self.whid = whid + self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.whid) + self.logger = system.util.getLogger("%s-Web-Socket-Message-Handler" % (self.whid)) + tag_to_read = "%sSystem/wbsckt_logging" % (self.tag_provider) + self.check_logger_active = system.tag.readBlocking([tag_to_read])[0].value + self.A2C_MESSAGE_TYPES = { + "SCADAMetricsInterface.StateChange": self.handle_state_message, +# "SCADAMetricsInterface.Event": self.handle_alarm_message, + "CloudMetricsInterface.Event": self.handle_alarm_message, + "ScadaCloud.Download": self.handle_download_message, + "ScadaCloud.Connection": self.handle_cloud_connection} + + def message_logger(self, message): + if self.check_logger_active: + self.logger.info(message) + + def message_lookup(self, message_type, message): + try: + self.A2C_MESSAGE_TYPES[message_type](message) + except KeyError as e: + self.message_logger("Message type not found:" + + str(message)) + + def handle_message(self, message): + heartbeat_message = message.get("action") + message_type = message.get("payload", {}).get("payloadType") + format = message.get("payload", {}).get("format") + if message_type == "ScadaCloud.Batch": + messages = message.get("payload", {}).get("messages",[]) + for i in messages: + message_type = i.get("payload", {}).get("payloadType") + self.message_lookup(message_type, i) + elif message_type !="ScadaCloud.Batch" and not heartbeat_message: + self.message_lookup(message_type, message) + else: + self.message_logger("Heartbeat:" + str(message)) + tag_to_write = "%sSystem/wbsckt_heartbeat_interval" % (self.tag_provider) + current_time = system.date.now() + system.tag.writeAsync([tag_to_write], [current_time]) + + + def handle_alarm_message(self, message): + global global_alarms + header = message.get("header",{}) + payload = message.get("payload",{}) + source = header.get("sourceId") + alarm_message = payload.get("message") + alarm_type = payload.get("type") + timestamp = payload.get("timestamp") + priority = payload.get("priority") + alarm_id = payload.get("id") + shelve_expiry = payload.get("shelveExpiryEpoch",0) + state = payload.get("state") + if (isinstance(source, unicode) and isinstance(alarm_message, unicode) + and isinstance(alarm_type, int)and isinstance(timestamp, long) + and isinstance(priority, int) and isinstance(shelve_expiry, int) + and isinstance(state, int)) and isinstance(alarm_id, int): + scada_alarm_message = {"sourceId": source, + "message": alarm_message, + "type": alarm_type, + "timestamp": timestamp, + "priority": priority, + "id": alarm_id, + "shelveExpiryEpoch": shelve_expiry, + "state": state} + alarm_id = "%s/alarm/%s" % (source, alarm_id) + if state == 0: + removed_value = global_alarms.pop(alarm_id, "No key found") + self.message_logger("Value removed from aws_data: " + + str(removed_value) + ":" + str(alarm_id)) + else: + global_alarms[alarm_id] = scada_alarm_message + self.message_logger("Value added to aws_data: " + + str(scada_alarm_message)) + else: + self.message_logger("Incorrect type value in message fields: " + + str(message)) + + def handle_state_message(self, message): + global global_queue + header = message.get("header",{}) + payload = message.get("payload",{}) + source_id = header.get("sourceId") + state = payload.get("currentMachineState") + time_stamp = payload.get("timestamp") + if isinstance(source_id, unicode) and isinstance(state, int): + scada_state_message = {"timestamp": time_stamp, + "state":state} + global_queue.put([source_id, state]) + self.message_logger("State message written to queue: " + + str({source_id:scada_state_message})) + else: + self.message_logger("Incorrect type value in message fields: " + + str(message)) + + def handle_download_message(self, message): + url = message.get("payload", {}).get("downloadUrl", None) + session_id = message.get("payload", {}).get("sessionId", None) + download = {} + payload = {"session_id":session_id, "url": url} + download["data"] = [payload] + tag_to_write = "%sSystem/download" % (self.tag_provider) + json_payload = system.util.jsonEncode(download) + system.tag.writeAsync([tag_to_write], [json_payload]) + self.message_logger("Download message received: " + + str(message)) + def handle_cloud_connection(self, message): + global global_alarms + UNKNOWN = 3 + ACTIVE = 1 + header = message.get("header",{}) + payload = message.get("payload",{}) + component_type = payload.get("componentType") + timestamp = header.get("timestamp", 0) + event_type = payload.get("eventType") + component_id = payload.get("componentId") + scada_alarm_message = create_disconnect_message(component_id, timestamp, 1) + if event_type == "DISCONNECT": + self.message_logger(str(scada_alarm_message)) +# #Call disconnect routine with a value 3 which is an unknown state. + self.alarms_disconnect(component_id, UNKNOWN, scada_alarm_message) + if event_type == "CONNECT": + #Call disconnect routine with a value 1 which is an active state. + self.alarms_disconnect(component_id, ACTIVE, scada_alarm_message) + if event_type == "SYNC" and component_type == "PLC": + alarm_id = "%s/alarm/%s" % (component_id, message) + for k,v in global_alarms.items(): + if k.startswith(component_id): + global_alarms.pop(alarm_id, "No key found") + + def alarms_disconnect(self, component_id, value, message): + global global_alarms + #Set alarms in the global_alarms to an unknown state. + #If component id == "DATABRIDGE" set all alarms to unknown + SITE_DISCONNECTS = ["DATABRIDGE", self.whid] + if component_id in SITE_DISCONNECTS: + site_disconnect = True + source_id = "" + else: + source_id = component_id + site_disconnect = False + for k,v in global_alarms.items(): + device_name = k.split("/")[0] + if k.startswith(source_id) and device_name not in SITE_DISCONNECTS: + global_alarms[k]["state"] = value + alarm_id = "%s/alarm/%s" % (component_id, "Device disconnected") + #Set the alarms to true for device disconnects + if site_disconnect: + data_bridge_disconnect(self.whid, value, message, component_id) + else: + tag_path = "%s%s/DCN" % (self.tag_provider, source_id) + if value == 3: + create_disconnect_tags(self.whid, source_id) + global_alarms[alarm_id] = message + system.tag.writeBlocking([tag_path], [1]) + else: + global_alarms.pop(alarm_id, "No key found") + system.tag.writeBlocking([tag_path], [0]) + +def create_disconnect_message(component_id, timestamp, state): + alarm_message = {"sourceId": component_id, + "message": "Device disconnected", + "type": 0, + "timestamp":timestamp, + "priority": 4, + "shelveExpiryEpoch": 0, + "state": state} + return alarm_message + +def data_bridge_disconnect(whid, value, message, component_id): + global global_alarms + device_list = get_device_list(whid) + time_stamp = message.get("timestamp") + tags_to_write = [] + values_to_write = [] + if value == 3: + disconnect = True + else: + disconnect = False + for i in device_list: + create_disconnect_tags(whid, i) + alarm_id = "%s/alarm/%s" % (i, "Device disconnected") + tag_path = "[%s_SCADA_TAG_PROVIDER]%s/DCN" % (whid, i) + device_message = create_disconnect_message(i, time_stamp, 3) + tags_to_write.append(tag_path) + if disconnect: + global_alarms[alarm_id] = device_message + values_to_write.append(1) + else: + global_alarms.pop(alarm_id, "No key found") + values_to_write.append(0) + alarm_id = "%s/alarm/%s" % (component_id, "Device disconnected") + if disconnect: + global_alarms[alarm_id] = message + else: + global_alarms.pop(alarm_id, "No key found") + system.tag.writeAsync(tags_to_write, values_to_write) + +def get_device_list(whid): + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + tag_path = "%sConfiguration/DetailedViews" % (provider) + tags_to_read = system.tag.readBlocking([tag_path]) + devices = system.util.jsonDecode(tags_to_read[0].value) + device_list = [] + for k,v in devices.items(): + for i in v: + device_list.append(i) + return device_list + +def create_disconnect_tags(whid, component_id): + logger_name = "%s-Create-Disconnect-Tags" % (whid) + logger = system.util.getLogger(logger_name) + base = "[%s_SCADA_TAG_PROVIDER]%s" % (whid, component_id) + if not system.tag.exists(base + "/DCN"): + tag = {"name": "DCN", + "valueSource": "memory", + "dataType": "Boolean", + "value": True} + create_tag = system.tag.configure(base, tag) + if not create_tag[0].isGood(): + logger.warn("Failed to create tag: " + str(source_id)) + +class Update(): + def __init__(self): + tags_to_read = system.tag.readBlocking(["Configuration/FC"]) + self.fc = tags_to_read[0].value + self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.fc) + self.tags_to_write = [] + self.values_to_write = [] + self.logger = system.util.getLogger("%s-Global variable reader" + % (self.fc)) + def read_messages_from_queue(self): + size = global_queue.qsize() + self.logger.info("Queue size: " + str(size)) + for i in range(0, size): + message = global_queue.get() + source_id ="%s%s/STATE" % (self.tag_provider, message[0]) + create_tags_in_place(source_id, message[1], self.logger) + self.tags_to_write.append(source_id) + self.values_to_write.append(message[1]) + + def write_tags(self): + alarm_path = "%sSystem/aws_data" % ( self.tag_provider) + alarm_data = system.util.jsonEncode(global_alarms) + self.tags_to_write.append(alarm_path) + self.values_to_write.append(alarm_data) + system.tag.writeBlocking(self.tags_to_write, self.values_to_write) + self.logger.info("State messages written: " + str(len(self.values_to_write))) + +def create_tags_in_place(source_id, value, logger): + base = source_id.replace("/STATE", "") + if not system.tag.exists(source_id): + tag = {"name": "STATE", + "valueSource": "memory", + "dataType": "Int1", + "value": value} + create_tag = system.tag.configure(base, tag) + if not create_tag[0].isGood(): + logger.warn("Failed to create tag: " + str(source_id)) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/resource.json new file mode 100644 index 0000000..bef3509 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "05928ceeca536530e4e685957e8069c577f0378f820dfd97b0da9093a894a3bd", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/code.py new file mode 100644 index 0000000..9c230b5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/code.py @@ -0,0 +1,879 @@ +import com.amazonaws.services.s3.AmazonS3ClientBuilder as AmazonS3ClientBuilder +import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest as GeneratePresignedUrlRequest +import com.amazonaws.HttpMethod as HttpMethod + +import boto3 +from botocore.client import BaseClient +from botocore.exceptions import ClientError +import json +from pprint import pformat +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +from helper.helper import sanitize_tree +from loggerConfig import getLogger + +REGION_NAME = 'us-east-1' +LOGGER = getLogger('S3Manager', 'debug') + +def getPresignedURL(self, objectKey): + """ + Generates a uri to retrieve images from an S3 bucket. + Bucket names are globally unique so different regions + must use a prefix for the bucket name. + Region and prefix are stored as custom session variables. + + Args: + self: Refrence to the object calling the function. + param2: key to the s3 object returned. + + Returns: + s3 Url to display the image in S3. + + Raises: + KeyError: None. + """ + + + bucket_names = {"eu":"ignition-image-repo", "na":"ignition-image-repo-na", + "jp":"jp-ignition-image-repo"} + +# aws = system.tag.readBlocking("Configuration/aws")[0].value +# aws = system.util.jsonDecode(aws) +# clientRegion = aws.get("region") +# prefix = aws.get("prefix") + clientRegion = self.session.custom.aws.region + prefix = self.session.custom.aws.prefix + + + bucketName = bucket_names.get(prefix, "ignition-image-repo") + + s3Client = AmazonS3ClientBuilder.standard().withRegion(clientRegion).build(); + generatePresignedUrlRequest = GeneratePresignedUrlRequest(bucketName, objectKey).withMethod(HttpMethod.GET); + url = s3Client.generatePresignedUrl(generatePresignedUrlRequest); + + return url + +S3_REPO_BUCKET_NAME = 'ignition-image-repo-na' +S3_SOURCE_BUCKET_NAME = 'ignition-image-source-na' +# api stage config +API_STAGES = ['beta', 'prod'] +API_REGIONS = ['na', 'eu'] +STAGE_CONFIG = { + 'beta': { + 'na': { + 'region': 'us-east-1', + 'lambda_name': 'RMESDScadaS3ManagementFlaskLambda-beta', + 'endpoint': 'https://us-east-1.beta.scada-s3-management.scada.eurme.amazon.dev/', + 'repo_bucket': 'ignition-image-repo-na', + 'source_bucket': 'ignition-image-source-na', + 's3_region': 'us-east-1', + 'account_id': '006306898152', + 'api_call_role': 'arn:aws:iam::604741092380:role/RMESDScadaS3ManagementAPIcallRole-beta-us-east-1' + }, + 'eu': { + 'region': 'eu-west-2', + 'lambda_name': 'RMESDScadaS3ManagementFlaskLambda-beta', + 'endpoint': 'https://eu-west-2.beta.scada-s3-management.scada.eurme.amazon.dev/', + 'repo_bucket': 'ignition-image-repo', + 'source_bucket': 'ignition-image-source', + 's3_region': 'eu-west-1', + 'account_id': '006306898152', + 'api_call_role': 'arn:aws:iam::604741092380:role/RMESDScadaS3ManagementAPIcallRole-beta-eu-west-2' + } + }, + 'prod': { + 'na': { + 'region': 'us-east-2', + 'lambda_name': 'RMESDScadaS3ManagementFlaskLambda-prod', + 'endpoint': 'https://us-east-2.scada-s3-management.scada.eurme.amazon.dev/', + 'repo_bucket': 'ignition-image-repo-na', + 'source_bucket': 'ignition-image-source-na', + 's3_region': 'us-east-1', + 'account_id': '006306898152', + 'api_call_role': 'arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-us-east-2' + }, + 'eu': { + 'region': 'eu-west-1', + 'lambda_name': 'RMESDScadaS3ManagementFlaskLambda-prod', + 'endpoint': 'https://eu-west-1.scada-s3-management.scada.eurme.amazon.dev/', + 'repo_bucket': 'ignition-image-repo', + 'source_bucket': 'ignition-image-source', + 's3_region': 'eu-west-1', + 'account_id': '006306898152', + 'api_call_role': 'arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-eu-west-1' + } + } +} +OPERATION_MAP = { + 'download': { + 'method': 'GET', + 'reqd_args': ['bucket', 'obj_key'] + }, + 'get_presigned_url': { + 'method': 'GET', + 'reqd_args': ['bucket', 'obj_key'] + }, + 'list_objects': { + 'method': 'GET', + 'reqd_args': ['bucket'] + }, + 'list_object_versions': { + 'method': 'GET', + 'reqd_args': ['bucket'] + }, + 'list_object_delete_markers': { + 'method': 'GET', + 'reqd_args': ['bucket'] + }, + 'delete': { + 'method': 'DELETE', + 'reqd_args': ['bucket', 'obj_key'] + }, + 'upload': { + 'method': 'PUT', + 'reqd_args': ['bucket', 'obj_key', 'obj_data'] + }, + 'add_new_site': { + 'method': 'PUT', + 'reqd_args': ['site', 'bucket'] + }, + 'copy_single': { + 'method': 'POST', + 'reqd_args': ['source_bucket', 'dest_bucket', 'source_key', 'dest_key'] + }, + 'fetch_site_list': { + 'method': 'GET', + 'reqd_args': ['bucket'] + }, + 'fetch_object_list_by_site_and_bucket': { + 'method': 'GET', + 'reqd_args': ['site', 'bucket'] + }, + 'fetch_upload_url': { + 'method': 'PUT', + 'reqd_args': ['bucket', 'obj_key', 'region', 'content_type'] + }, + 'query_audit_table': { + 'method': 'POST', + 'reqd_args': [] + } +} + +class S3Manager(object): + """ + This class contains convenience methods for working with S3 objects from Ignition python 2.7 + """ + + def __init__(self, api_stage='prod', api_region_name='na', username='', profile_name=None): + """ + Instantiates an S3 Class. + + :param api_stage: str; (default='prod') api target stage (and default S3 folder) + :param api_region_name: str; (default='na') api target region (and account) + :param username: str; ignition session username (from `session.props.auth.user.userName`) + :return: None + """ + self._logger = LOGGER + # sanitize api stage and region values + if api_stage not in API_STAGES: + self._logger.info("`api_stage` must be one of: %s, received: %s" % (API_STAGES, api_stage)) + api_stage = 'prod' + if api_region_name not in API_REGIONS: + self._logger.info("`api_region_name` must be one of: %s, received: %s" % (API_REGIONS, api_region_name)) + api_region_name = 'na' + self._api_stage = api_stage + self._api_region_name = api_region_name + # grab stage config for this instance from global object + self._stage_config = STAGE_CONFIG.get(api_stage, STAGE_CONFIG['prod']).get(api_region_name, STAGE_CONFIG['prod']['na']) + d = self._stage_config + self._api_region = d.get('region', 'us-east-2') + self._s3_region = d.get('s3_region', 'us-east-1') + self._repo_bucket = d.get('repo_bucket', 'ignition-image-repo-na') + self._source_bucket = d.get('source_bucket', 'ignition-image-source-na') + self._lambda_name = d.get('lambda_name', 'RMESDScadaS3ManagementFlaskLambda-prod') + self._account_id = d.get('account_id', '006306898152') + self._endpoint = d.get('endpoint', 'https://us-east-2.scada-s3-management.scada.eurme.amazon.dev/') + self._service = 'execute-api' + if profile_name: + self._creds = boto3.Session(profile_name=profile_name).get_credentials() + # Define an opener method. The opener will apply AWS Sigv4 signing to requests + self._opener = aws_urlopen( + self._creds.access_key, + self._creds.secret_key, + self._api_region, + self._service, + session_token=self._creds.token, + verify=False + ) + else: + # DEVNOTE: As the API has been segregated from the AWS account for the dev server, assume a dedicated role here + sts_client = boto3.Session().client('sts') + role_arn = d.get('api_call_role', None) + if role_arn: + response = sts_client.assume_role(RoleArn=role_arn, RoleSessionName='ignition-s3-mgmt-client') + creds = response['Credentials'] + # Define an opener method. The opener will apply AWS Sigv4 signing to requests + self._opener = aws_urlopen( + creds['AccessKeyId'], + creds['SecretAccessKey'], + self._api_region, + self._service, + session_token=creds['SessionToken'], + verify=False + ) + else: + # use native boto3 creds if 'api_call_role' not defined in STAGE_CONFIG + self._creds = boto3.Session(profile_name=profile_name).get_credentials() + self._opener = aws_urlopen( + self._creds.access_key, + self._creds.secret_key, + self._api_region, + self._service, + session_token=self._creds.token, + verify=False + ) + self._headers = {'Content-type': 'application/json', 'X-Remote-User': username} + + def _send(self, operation='download', params={}, print_resp=False, **kwargs): + """ + private method to compile and send the request to api endpoint + + :param operation: str; api endpoint method for request (See `OPERATION_MAP` for options) + :param params: dict; dictionary of parameters to pass to request (See `OPERATION_MAP` for reqd args) + :param print_resp: bool; if True, the associated logger will receive a print statement of the raw response, pprint.format'd + :return resp: dict; response object from api + """ + l = self._logger + if operation not in OPERATION_MAP.keys(): + msg = 'operation "%s" is not a valid S3Manager operation! Options: %s' % (operation, list(OPERATION_MAP.keys())) + l.error(msg) + raise InvalidOperationS3Manager(msg) + op_config = OPERATION_MAP[operation] + method = op_config['method'] + reqd_args = op_config['reqd_args'] + missing_args = [x for x in reqd_args if x not in params.keys()] + if len(missing_args): + msg = 'The following required args were not provided in params for "%s" operation: %s' % (operation, missing_args) + l.error(msg) + raise InvalidParametersS3Manager(msg) + if method in ('GET', 'DELETE'): + querystring = '?%s' % urlencode(params) + payload = None + url = self._endpoint + operation + querystring + else: + try: + payload = json.dumps(params) + l.debug('payload for %s operation successfully serialized' % operation) + except: + payload = urlencode(params) + l.debug('payload for %s operation not serialized using json.dumps(), instead used urlencode()' % operation) + url = self._endpoint + operation + # Create a request object + req = Request(url=url, method=method, headers=self._headers, data=payload) + # open the request and process the read + try: + # use self._opener to sign and send the prepared request + resp = self._opener(req) + data = json.loads(resp.read()) + if print_resp: + l.info('Response data: %s' % pformat(sanitize_tree(data))) + return data + except HTTPError, e: + try: + body = json.loads(e.fp.read()) + e_msg = body.get('message', e.reason) + msg = 'Error sending S3Manager request: %s. Message: %s' % (str(e), e_msg) + l.error(msg) + raise HTTPErrorS3Manager(e.code, e_msg) + except AttributeError, e2: + # failed to extract reason or code from urllib2.HTTPError for some reason + import traceback + msg = 'Failed to extract reason and/or error code from urllib2.HTTPError. Trace: %s' % traceback.format_exc() + l.error(msg) + msg = 'Error sending S3Manager request: %s' % (str(e)) + l.error(msg)# raise HTTPErrorS3Manager(e.code, msg) + raise HTTPErrorS3Manager(400, msg) + + def upload(self, obj_data, obj_key, bucket=None, content_type='', region=None, **kwargs): + """ + Method to upload a JSON object to S3. Converts S3 to a compressed binary parquet file, then writes + the file to S3. + + :param obj_data: JSON data object to upload to S3 + :param obj_key: Path and object name of the object to create in S3 + :param bucket: S3 bucket to write data to. + :param content_type: str; 'application/json' for json files, 'image/svg+xml' for svg files + :param region: AWS region that hosts the target S3 bucket. + :return: Boto3 `put_object` response + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Uploading %s dataset to bucket %s' % (obj_key, bucket)) + l.debug('++ Storing data file in S3') + operation = 'upload' + # check the suffix of obj_key and auto-populate content_type accordingly + if obj_key.endswith('json'): + content_type = 'application/json' + elif obj_key.endswith('svg'): + content_type = 'image/svg+xml' + elif obj_key.endswith('drawio'): + content_type = 'binary/octet-stream' + try: + if isinstance(obj_data, dict): + # serialize the object to a JSON string + obj_data = json.dumps(obj_data) + msg = '++ Uploading. Successfully serialized (json dump) object data for %s' % obj_key + l.debug(msg) + else: + msg = 'Uploading. Type of incoming object data: %s' % type(obj_data) + l.debug(msg) + except: + import traceback + msg = '++ Uploading. Error trying to serialize (json dump) object data: %s' % traceback.format_exc() + l.error(msg) + return msg +# params = { +# 'bucket': bucket, +# 'obj_key': obj_key, +# 'obj_data': obj_data, +# 'content_type': content_type, +# 'region': region +# } +# try: +# resp = self._send(operation, params, print_resp=kwargs.get('print_resp', False)) +# l.debug('** Uploading Complete. Successfully uploaded %s' % obj_key) +# return resp +# except HTTPErrorS3Manager, e: +# return {'code': e.code, 'message': e.message} + # DEVNOTE: As there is a 10mb limitation on payload size to API gateway calls, going to use the + # `fetch_upload_url` method to get a presigned upload link and upload via system.net.httpPut + # so the above code will be commented out to use the below code + params = { + 'bucket': bucket, + 'obj_key': obj_key, + 'region': region, + 'content_type': content_type + } + try: + upload_url = self.fetch_upload_url(**params) + l.debug('** Fetching Upload URL Complete for object key: %s' % obj_key) + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + try: + # DEVNOTE: Test code below to upload to pre-signed S3 PUT url using urllib2_aws4auth module + # Create a request object using urllib2_aws4auth.Request and aws_urlopen methods + # see if this is limited like with the upload call to API gateway. + # system.net.httpPut call below is not limited + # Results: what works with `system.net.httpPut` fails with `urllib2_aws4auth` module (returns 400: BadRequest) + # if the file is > ~ 75 kb +# req = Request(url=upload_url, method='PUT', headers=self._headers, data=obj_data) +# resp = self._opener(req).read() +# msg = '** Successfully uploaded %s to %s bucket!\nResponse: %s' % (obj_key, bucket, pformat(resp)) + resp = system.net.httpPut(upload_url, putData=obj_data, contentType=content_type) + msg = '** Successfully uploaded %s to %s bucket!' % (obj_key, bucket) + l.debug(msg) + return {'code': 200, 'message': msg} + except Exception, e: + msg = '++ Error uploading %s to %s bucket: %s' % (obj_key, bucket, str(e)) + l.error(msg) + return {'code': 400, 'message': msg} + + def fetch_upload_url(self, obj_key, bucket=None, region=None, expiration=3600, content_type="image/svg+xml", **kwargs): + """ + Retrieves a pre-signed URL for the obj key and bucket and the `put_object` client method. + Caller then uses pre-signed URL to upload the file to S3 directly. + + :param obj_key: Path and object name of the object to create in S3 + :param bucket: S3 bucket to write data to. + :param region: AWS region that hosts the target S3 bucket. + :param expiration: int; number of seconds until the link expires (default = 3600, 1 hour) + :param content_type: str; the content-type of the object (default = 'image/svg+xml') + :return: str; presigned URL as string. + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Fetching upload pre-signed URL for %s object in %s bucket' % (obj_key, bucket)) + operation = 'fetch_upload_url' + params = { + 'bucket': bucket, + 'obj_key': obj_key, + 'expiration': expiration, + 'region': region, + 'content_type': content_type + } + try: + resp = self._send(operation, params, print_resp=kwargs.get('print_resp', False)) + l.debug('** Fetching Upload URL Completed for %s' % obj_key) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def add_new_site(self, site=None, bucket='both', **kwargs): + """ + Adds a new site folder to either repo, source, or both buckets + + :param site: str; name of site/WHID. Must be 4 chars in format of "ABC1" + :param bucket: str; name of the bucket (S3_REPO_BUCKET_NAME, S3_SOURCE_BUCKET_NAME, or 'both') to add site folder to + if = 'both', then site folder will be added to both buckets + :return: dict; {'message': str} summarizing the folder add operation + """ + l = self._logger + l.info('Adding site %s folder' % (site)) + operation = 'add_new_site' + params = {'site': site, 'bucket': bucket} + try: + resp = self._send(operation, params, print_resp=kwargs.get('print_resp', False)) + l.debug('** Adding Site Complete. Successfully added %s to %s bucket(s)' % (site, bucket)) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def download(self, obj_key, bucket=None, region=None): + """ + Downloads a JSON object from S3. File is received as a compressed binary Parquet file + :param obj_key: Path and object name of the data stored in S3 + :param bucket: Bucket the target object is stored in. + :param region: AWS Region of the target bucket. + :return: JSON data object generated from the Parquet file stored in S3 + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + # - Only used for logging; extract dates and data source from the object key + obj_key_parts = obj_key.split('/') + l.info('-- Downloading %s object from bucket %s' % (obj_key, bucket)) + operation = 'download' + params = { + 'bucket': bucket, + 'obj_key': obj_key, + 'region': region + } + try: + resp = self._send(operation, params) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def get_presigned_url(self, bucket=None, obj_key='', client_method='get_object', expiration=3600, region=None, content_type="text/plain"): + """ + Generate a presigned URL to object from S3. + Used primarily for retreiving image objects in Ignition + + :param obj_key: str; uri of object to fetch + :param bucket_: str; bucket name where object resides + :param client_method: str; (default = 'get_object') + :param expiration: int; number of seconds until the link expires (default = 3600, 1 hour) + :param content_type: str; the content-type of the object (default = 'text/plain') + :return: str; presigned URL as string. If no client_method or error, returns None. + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + if not content_type: + msg = 'content_type cannot be null!' + l.error(msg) + raise InvalidParametersS3Manager(msg) + l.info('Fetching pre-signed url for %s from bucket %s' % (obj_key, bucket)) + operation = 'get_presigned_url' + params = { + 'bucket': bucket, + 'obj_key': obj_key, + 'client_method': client_method, + 'expiration': expiration, + 'content_type': content_type + } + try: + resp = self._send(operation, params) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def delete(self, obj_key, bucket=None, region=None): + """ + Deletes a JSON object from S3. File is flagged for deletion in the S3 bucket + :param obj_key: Path and object name of the data stored in S3 + :param bucket: Bucket the target object is stored in. + :param region: AWS Region of the target bucket. + :return: Boto3 `delete_object` response + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Deleting %s object from bucket %s' % (obj_key, bucket)) + operation = 'delete' + params = { + 'bucket': bucket, + 'obj_key': obj_key, + 'region': region + } + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully deleted %s' % obj_key) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def list_objects(self, bucket=None, prefix='', start_after='', region=None): + """ + Fetches a list of objects within a specified bucket, prefix, and starting point + + :param bucket: str; Bucket target object is located + :param prefix: str; Limits the response to keys that begin with the specified prefix + :param start_after: str; StartAfter is where you want Amazon S3 to start listing from. + Amazon S3 starts listing after this specified key. StartAfter can be any key in the bucket. + :param region: Region of the target S3 Bucket + :return: Boto3 `list_objects_v2.Contents` response. This consists of the following keys per object returned: + { + 'ETag': str; unique id, + 'Key': str; path to object in bucket, + 'LastModified': datetime.datetime(); time object last modified, + 'Size': int; size in bytes of the object, + 'StorageClass': str; type of storage used on the object + } + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Fetching list of objects from bucket %s' % bucket) + operation = 'list_objects' + params = { + 'bucket': bucket, + 'prefix': prefix, + 'start_after': start_after, + 'region': region + } + try: + resp = self._send(operation, params) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def list_object_versions(self, bucket=None, prefix='', region=None): + """ + Fetches a list of object versions within a specified bucket, prefix, and starting point + + :param bucket: str; Bucket target object is located + :param prefix: str; Limits the response to keys that begin with the specified prefix + :param region: Region of the target S3 Bucket + :return: Boto3 `list_object_versions.Versions` response. This consists of the following keys per object returned: + { + 'ETag': str; unique id, + 'IsLatest': bool; only true for the current version, + 'Key': str; path to object in bucket, + 'LastModified': datetime.datetime(); time object last modified, + 'Owner': {'DisplayName': str; name of owner/group, 'ID': str;,} + 'Size': int; size in bytes of the object, + 'StorageClass': str; type of storage used on the object, + 'VersionId': str; ID of object version + } + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Fetching list of object versions from bucket %s' % bucket) + operation = 'list_object_versions' + params = { + 'bucket': bucket, + 'prefix': prefix, + 'region': region + } + try: + resp = self._send(operation, params) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def list_object_delete_markers(self, bucket=None, prefix='', region=None): + """ + Fetches a list of object delete markers within a specified bucket, prefix, and starting point + + :param bucket: str; Bucket target object is located + :param prefix: str; Limits the response to keys that begin with the specified prefix + :param region: Region of the target S3 Bucket + :return: Boto3 `list_object_versions.DeleteMarkers` response. This consists of the following keys per object returned: + { + 'IsLatest': bool; only true for the current version, + 'Key': str; path to object in bucket, + 'LastModified': datetime.datetime(); time object last modified, + 'Owner': {'DisplayName': str; name of owner/group, 'ID': str;,} + 'VersionId': str; ID of object version + } + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Fetching list of object delete markers from bucket %s' % bucket) + operation = 'list_object_delete_markers' + params = { + 'bucket': bucket, + 'prefix': prefix, + 'region': region + } + try: + resp = self._send(operation, params) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def copy_single(self, source_bucket=None, dest_bucket=None, source_key='', dest_key='', region=None): + """ + Method to copy a single object from source bucket|key to destination bucket|key. + + :param source_bucket: str; Source bucket name to copy from + :param dest_bucket: str; Destination bucket name to copy to + :param source_key: str; Source object key name to copy + :param dest_key: str; Destination object key name to copy to + :param region: Region of the target S3 Bucket + :return: null or ClientError; returns null if successfully copied + """ + l = self._logger + if not source_bucket: + # if no source bucket provided, use repo bucket name from stage config + source_bucket = self._repo_bucket + if not dest_bucket: + # if no destination bucket provided, use repo bucket name from stage config + dest_bucket = self._repo_bucket + if not region: + # if no region provided, use region name from stage config + region = self._s3_region + l.info('Copying %s object from bucket %s to object %s in bucket %s' % (source_key, source_bucket, dest_key, dest_bucket)) + l.debug('++ Copying data in S3') + operation = 'copy_single' + params = { + 'source_bucket': source_bucket, + 'dest_bucket': dest_bucket, + 'source_key': source_key, + 'dest_key': dest_key, + 'region': region + } + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully copied object %s from bucket %s to object %s in bucket %s' % + (source_key, source_bucket, dest_key, dest_bucket)) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def fetch_site_list(self, bucket=None): + """ + This method will compile a list of all sites configured in the requested S3 bucket + + :param bucket: str; the S3 bucket to fetch sites from. (Default = S3_REPO_BUCKET_NAME) + :return: list; array of whids present in the S3 bucket + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + l.info('Requesting site list for bucket: %s' % bucket) + operation = 'fetch_site_list' + params = { + 'bucket': bucket + } + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully returned %d sites for bucket %s' % (len(resp), bucket)) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def fetch_object_list_by_site_and_bucket(self, site='', bucket=None): + """ + This function fetches the list of file objects + from the S3 folder specified by the bucket and site args supplied. + + :param site: str; whid name of the site to fetch from + :param bucket: str; name of the bucket where the files reside + :return: Dict[str, Any]; {'instance_configs': Dict[str,Any], 'flow_views': List[str]} + """ + l = self._logger + if not bucket: + # if no bucket provided, use repo bucket name from stage config + bucket = self._repo_bucket + l.info('Requesting object list for site %s in bucket: %s' % (site, bucket)) + operation = 'fetch_object_list_by_site_and_bucket' + params = { + 'site': site, + 'bucket': bucket + } + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully returned object list for site %s on bucket %s' % (site, bucket)) + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def query_audit_table(self, start_time = None, end_time = None, operation = None, copy_option = None, + destination_bucket = None, destination_view = None, destination_object_key = None, + destination_site = None, destination_stage = None, destination_version_id = None, + error_message = None, error_occurred = None, expires = None, + source_bucket = None, source_view = None, source_object_key = None, source_site = None, + source_stage = None, source_version_id = None, timestamp = None, username = None, + return_items_only = True, **kwargs): + """ + Query/scan the audit table and return records matching the supplied parameters + + :param start_time: Optional[Union[str,datetime]]; if provided, will define the beginning of the + time range to filter on the `timestamp` column. `timestamp` column is a string in the format + "%Y-%m-%d %H:%M:%S" + :param end_time: Optional[Union[str,datetime]]; if provided, will define the beginning of the + time range to filter on the `timestamp` column. `timestamp` column is a string in the format + "%Y-%m-%d %H:%M:%S" + :param operation: Optional[Union[str,List,Dict]]; match on operation column + :param copy_option: Optional[Union[str,List,Dict]]; match on copy_option column ('svg', 'json', 'both') + :param destination_bucket: Optional[Union[str,List,Dict]]; match on destination_bucket column + :param destination_view: Optional[Union[str,List,Dict]]; match on destination_view column + :param destination_object_key: Optional[Union[str,List,Dict]]; match on destination_object_key column + :param destination_site: Optional[Union[str,List,Dict]]; match on destination_site column + :param destination_stage: Optional[Union[str,List,Dict]]; match on destination_stage column + :param destination_version_id: Optional[Union[str,List,Dict]]; match on destination_version_id column + :param error_message: Optional[Union[str,List,Dict]]; match on error_message column + :param error_occurred: Optional[Union[bool,List,Dict]]; match on error_error_occurred column + :param expires: Optional[Union[str,List,Dict]]; match/filter on expires column + :param source_bucket: Optional[Union[str,List,Dict]]; match on source_bucket column + :param source_view: Optional[Union[str,List,Dict]]; match on source_view column + :param source_object_key: Optional[Union[str,List,Dict]]; match on source_object_key column + :param source_site: Optional[Union[str,List,Dict]]; match on source_site column + :param source_stage: Optional[Union[str,List,Dict]]; match on source_stage column + :param source_version_id: Optional[Union[str,List,Dict]]; match on source_version_id column + :param timestamp: Optional[Union[str,List,Dict]]; match/filter on timestamp column + (overridden by `start_time` and `end_time` args) + :param username: Optional[Union[str,List,Dict]]; match on username column + :param return_items_only: bool; if true, strip the `Items` from boto3 response, + if false, return the entire response object + :returns: List[Dict[str,Any]]; array of items that match the scan filters supplied + """ + l = self._logger + # build params to send to Lambda using `locals()`. I know it's frowned upon but I'm not trying to type all that!! + params = {k:v for k,v in locals().items() if k not in ('self', 'l', 'kwargs') and v not in (None, '')} + # override `operation` arg for pass to `_send` method, as the value to query is already packed in `params` + operation = 'query_audit_table' + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully queried audit table using supplied query params') + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def check_user_site_permissions(self, whid = None, obj_key = None): + """ + Check if a given username has permissions to the site folder in the flow-view S3 bucket + + :param whid: str; warehouse id/site name to check + :param obj_key: str; [OPTIONAL] if provided, will check user permissions to the object key, rather than the whid + :return: Dict[str,Any]; { + 'code': int; 200 if the user has permissions, 403 if Forbidden to access + 'message': str; explanation to display, if needed. Will include necessary group memberships missing if Forbidden + } + """ + l = self._logger + operation = 'check_user_site_permissions' + params = {'whid': whid, 'obj_key': obj_key} + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully checked user site permissions on backend') + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def fetch_user_site_permissions_and_area_list(self, username = None, stage_name = 'beta'): + """ + Fetch the sites for which the user has flow-view write permissions for the given stage. + Also fetches the list of "area" names that flow-views can be created for + + :param username: str; user alias/id to fetch sites for + :param stage_name: str; stage folder of flow-view resources to check permissions on + :return: Dict[str,Any]; response object including a list of sites and area names. + { + "code": int; 200 if successful call, 4** if user not found, + "sites": List[str]; List of site names, + "areas": List[str]; List of valid flow-view area names + } + """ + l = self._logger + operation = 'fetch_user_site_permissions_and_area_list' + params = {'username': username, 'stage_name': stage_name} + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully fetched user site permissions and area list') + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + + def fetch_master_area_list(self): + """ + Download a master list of valid flow-view area names, stored in S3 + + :return: List[str]; returns list of area names + """ + l = self._logger + operation = 'fetch_master_area_list' + params = {} + try: + resp = self._send(operation, params) + l.debug('** Complete. Successfully fetched master area list') + return resp + except HTTPErrorS3Manager, e: + return {'code': e.code, 'message': e.message} + +class InvalidOperationS3Manager(Exception): + """ + Invalid operation requested for S3Manager class + """ + def __init__(self, code=400, msg='Invalid operation requested for S3Manager class'): + self.code = code + self.message = msg + + +class InvalidParametersS3Manager(Exception): + """ + Invalid parameters for S3Manager operation + """ + def __init__(self, code=400, msg='Invalid parameters for S3Manager operation'): + self.code = code + self.message = msg + + +class HTTPErrorS3Manager(Exception): + """ + HTTP Error for S3Manager Request + """ + def __init__(self, code=500, msg='HTTP Error Encountered Sending S3Manager Request'): + self.code = code + self.message = msg + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/resource.json new file mode 100644 index 0000000..a9f1b8f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "162a806e99183e69afd385b4676eeca2c21a74deb25b68b95988197a9f669538" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/code.py new file mode 100644 index 0000000..5a3f367 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/code.py @@ -0,0 +1,33 @@ +import json +import com.amazonaws.services.secretsmanager.AWSSecretsManager as AWSSecretsManager ; +import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder as AWSSecretsManagerClientBuilder; +import com.amazonaws.services.secretsmanager.model.GetSecretValueRequest as GetSecretValueRequest; +import com.amazonaws.services.secretsmanager.model.GetSecretValueResult as GetSecretValueResult; + +def get_secret(whid, secret_name): + logger_name = "%s-Secrets Manager" % (whid) + logger = system.util.getLogger(logger_name) + logger.info("Getting secret from Secrets Manager") + ec2_name = system.tag.readBlocking(["[System]Gateway/SystemName"])[0].value + secretClient = AWSSecretsManagerClientBuilder.standard().build() + getSecretValueRequest = GetSecretValueRequest().withSecretId(secret_name) + + try: + getSecretValueResponse = secretClient.getSecretValue(getSecretValueRequest).getSecretString() + secrets_dict = json.loads(getSecretValueResponse) + beta_gateway_name = secrets_dict.get("beta-gateway-name") + if ec2_name == beta_gateway_name: + api_id = secrets_dict.get("beta-api-id") + stage = secrets_dict.get("beta-stage") + account_id = secrets_dict.get("beta-account-id") + function_url = secrets_dict.get("beta-history-function-url") + else: + api_id = secrets_dict.get("prod-api-id") + stage = secrets_dict.get("prod-stage") + account_id = secrets_dict.get("prod-account-id") + function_url = secrets_dict.get("prod-history-function-url") + return api_id, stage, account_id, function_url + except: + AWS.errors.error_handler(whid, "Secrets Manager") + + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/resource.json new file mode 100644 index 0000000..0e00d82 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "bb5121da5fdd529282d283c375c8c589095e352383a2d1c530fc58db6f7f1e57" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py new file mode 100644 index 0000000..e8d6d02 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py @@ -0,0 +1,54 @@ +import time + +def close_websckt(): + """ + This function disconnects the web socket and exits any loops. + Should be called when a project is saved or modified to stop + multiple threads running. + + Args: + None + + Returns: + N/A + + Raises: + N/A + """ + + fc = system.tag.readBlocking(["Configuration/FC"]) + fc_value = fc[0].value + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc_value) + system.tag.writeBlocking([tag_provider + "System/close_socket"],[0]) + running = system.util.getGlobals().get(fc_value, {}).get("wbsckt_running", 0) + if running: + system.util.getGlobals()[fc_value]["wbsckt_running"] = False + system.tag.writeBlocking(tag_provider + "System/wbsckt_running", [0]) + time.sleep(2) + system.tag.writeBlocking([tag_provider + "System/close_socket"],[1]) + logger = system.util.getLogger("%s-WebSocket-Restart" % (fc)) + logger.info("Web-Socket closed due to restart, AWS.wbsckt_abort.close_websckt()") + +def check_web_socket(): + """ + This function checks to see if the "System/close_socket" tag is active + (boolean on) or inactive (boolean off). If the tag is active the web + socket will run, if it is inactive then the web socket will stop running. + This function is called from the main web socket gateway event. + Used to exit the web socket gateway event. + + Args: + None + + Returns: + True or False + + Raises: + N/A + """ + request_to_close = system.tag.readBlocking(["System/close_socket"]) + request_to_close_val = request_to_close[0].value + if not request_to_close_val: + return True + else: + return False diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json new file mode 100644 index 0000000..767658a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "87b0ce4a59aef77cbfde3a61e482fdfb5d5e9b82fc5bfe465e0f0b69083407ca", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py new file mode 100644 index 0000000..5ab8a80 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py @@ -0,0 +1,211 @@ +import java.net.http.WebSocketHandshakeException +from java.net.http import HttpClient; +from java.net.http import WebSocket; +from java.net import URI +from java.lang import Thread +import uuid +import json +import time + +#Check for a http client stored in the globals. +whid = system.tag.readBlocking(["Configuration/FC"])[0].value +client = system.util.getGlobals().get(whid, {}).get("http_client", None) +#Store the http client as a global variable to be reused on project saves. +if not client: + client = HttpClient.newHttpClient() + system.util.getGlobals()[whid]["http_client"] = client + +class Listener(WebSocket.Listener): + """ + Creates a Listener for receiving web socket messages. + The mehtods in this class are standard Java methods + that have been overidden to include additional functionality. onOpen, + onText, onClose and onError are called by the class whenthe web socket + is opened, when the web socket receives data, + when the web socket is closed, when the web socket encounters an error, + respectively. Messages are sent from the web socket by calling the sendText + method on the Listener object. + + Args: + whid: Warehouse id for the tag provider (string). + message_handler: A message handler object which parses + the messages received from the onText + method (class) + + Returns: + Listener object. + + Raises: + Error handling is performed by the onError method. + This method can be overidden with additional logic + for handling errors detected by the Listener object. + """ + def __init__(self, whid, message_handler): + self.whid = whid + self.alarms = {} + self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.whid) + self.logger = system.util.getLogger("%s-Web-Socket-Listener" % (self.whid)) + self.message = "" + self.message_handler = message_handler + + def onOpen(self, websocket): + #Generate uuid to help track the connection in aws. + uid = uuid.uuid4() + on_open_subscribe = json.dumps({"action": "subscribe", + "parameters": {"siteId": self.whid, + "clientName": str(uid)}} + ) + websocket.sendText(on_open_subscribe, True) + logger = system.util.getLogger("Web-Socket-OnOpen") + self.logger.info("message sent =" + str(on_open_subscribe)) + websocket.request(1) + + def onText(self, websocket, data, last): + self.message += str(data) + if not last: + websocket.request(1) + else: + json_message = json.loads(self.message) + self.message = "" + self.message_handler.handle_message(json_message) + websocket.request(1) + + def onClose(self, websocket, error): + self.logger.info("Onclose method " + str(error)) + + def onError(self, websocket, error): + self.logger.error("OnError method " + str(error)) + + +def web_socket_main(whid, provider, region, message_handler, secret_name): + """ + Main function for running a web socket. This function can + be called in an asynchronous thread and should only exit + when the socket has been closed or an error is encountered. + The function will create a web socket object and run in a + while loop to keep the socket connection open. + It will exit if an error is encounterd, the socket is manually + closed from the tag provider or the socket is closed. + + Args: + whid: Warehouse id for the tag provider (string). + provider: Tag provider that the web socket will use to write messages to/from (string). + region: The AWS region of the api endpoint. Usally the same region as the EC2 + running the web socket (string). + message_handler: message handler object used for parsing of the web socket messages (class). + secret_name : name of the secret to be passed into the web socket. This will retreive the api endpoint for AWS. + + Returns: + N/A. + Raises: + Secrets manager error + web socket error + """ + thread_name = str(Thread.getId(Thread.currentThread())) + system.tag.writeAsync([provider + "system/thread_id"],[thread_name]) + system.util.getGlobals()[whid]["wbsckt_running"] = True + system.tag.writeAsync([provider + "System/wbsckt_running"],[1]) + logger_name = "%s-web-socket-main" % (whid) + logger = system.util.getLogger(logger_name) + timer_end = None + timer_started = False + """The heartbeat is initalised with the current time on first connect + Each time a new heartbeat is recieved in AWS.message_types + the current time is written to the tag wbsckt_heartbeat_interval. + The websocket checks that a heartbeat has been recieved at least every 120 secs. + If a heartbeat is not recieved within the 120 sec duration the connection is closed and the loop will exit. + """ + AWS.heartbeat.get_heartbeat(provider) + tags_to_read = system.tag.readBlocking([provider + "System/wbsckt_heartbeat_interval"]) + wbsckt_heartbeat_interval = tags_to_read[0].value + #Return api endpoint from secrets manager. + API_ID, STAGE, ACC_ID, FUNC_URL = AWS.secrets_manager.get_secret(whid, secret_name) + + try: + credentials = AWS.credentials.assume_role(profile_name = "default", region = region, arn = ACC_ID, api_id = API_ID, stage = STAGE) + except: + AWS.errors.error_handler(whid, "AWS.credentials.assume_role") + return + + logger.info("Building URL ....") + url, headers = AWS.build_url.make_websocket_connection(API_ID, region, STAGE, credentials) + listener = AWS.web_socket.Listener(whid, message_handler) +# client = HttpClient.newHttpClient() + #set the client as global (stored in the system global variables). + global client + uri = URI.create(url) + logger.info(str(uri)) + logger.info("Building web-socket object ....") + wsBuilder = client.newWebSocketBuilder() + wsBuilder.header("Authorization", headers["Authorization"]) + wsBuilder.header("X-Amz-Date", headers["X-Amz-Date"]) + wsBuilder.header("X-Amz-Security-Token", headers["X-Amz-Security-Token"]) + + try: + wsObj = wsBuilder.buildAsync(uri, listener) + except: + AWS.errors.error_handler(whid, "Build web socket") + return + + web_socket = wsObj.get() + logger.info("Web socket object built, starting while loop ....") + running = 1 + + while True: + time.sleep(0.1) + if running == 1: + logger.info("While loop running ....") + running = 0 + + if AWS.heartbeat.check_heartbeat(provider, 70): + web_socket.sendClose(web_socket.NORMAL_CLOSURE, "Missing heartbeat") + logger.warn("socket closed , missing heartbeat") + web_socket.abort() + text_val = web_socket.sendText(str({"action":"abort"}), True) + break + + check_socket_closed_in_loop = AWS.wbsckt_abort.check_web_socket() + if check_socket_closed_in_loop: + web_socket.sendClose(web_socket.NORMAL_CLOSURE, "") + logger.info("socket close initiated") + # web_socket.abort() + text_val = web_socket.sendText(str({"action":"abort"}), True) + break + + if not timer_started: + timer_start = system.date.now() + timer_started = True + + timer_end = system.date.now() + time_diff = system.date.secondsBetween(timer_start, timer_end) + if time_diff >= wbsckt_heartbeat_interval: + send_heartbeat = True + timer_started = False + + if web_socket.isOutputClosed(): + logger.info("Websocket output closed") + break + + if web_socket.isInputClosed(): + logger.info("Websocket input closed") + break + + this_thread = system.tag.readBlocking(provider + "System/thread_id")[0].value + if this_thread != thread_name: + logger.warn("thread_id does not match current thread_id") + break + + tags_to_read = system.tag.readBlocking(["System/wbsckt_messages_send"]) + messages = system.util.jsonDecode(tags_to_read[0].value) + message_list = messages.get("message_list") + if message_list: + for i in message_list: + message_string = str(i) + formatted_string = message_string.replace("u'","'") + json_string = formatted_string.replace("'","\"") + web_socket.sendText(str(json_string), True) + logger.info("Message sent: " + str(json_string)) + system.tag.writeAsync(["System/wbsckt_messages_send"], "{}") + system.util.getGlobals()[whid]["wbsckt_running"] = False + web_socket.abort() + system.tag.writeBlocking([provider + "System/wbsckt_running"], [0]) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json new file mode 100644 index 0000000..7b0b6b2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "c016fb3c9a13e22bb00c0afdcfcc79be736a19ed2176077367651075413085db", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py new file mode 100644 index 0000000..2b69950 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py @@ -0,0 +1,21 @@ +import json + +class SendMessage(): + + def __init__(self, whid): + self.whid = whid + tag_path = "[%s_SCADA_TAG_PROVIDER]System/wbsckt_messages_send" % (whid) + tags_to_read = system.tag.readBlocking([tag_path]) + self.messages_to_send = system.util.jsonDecode(tags_to_read[0].value) + system.tag.writeBlocking([tag_path],[system.util.jsonEncode({})]) + self.message_list = {} + + def build_message_list(self): + if self.messages_to_send: + self.message_list = json.dumps(self.messages_to_send) + else: + self.message_list = None + + + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json new file mode 100644 index 0000000..f83fcdc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6efbac41afa672e912a9af87a096a49be573fbfda704c00482f0aa68f4e1249a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/code.py new file mode 100644 index 0000000..dd3e5d8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/code.py @@ -0,0 +1,17 @@ +def showAlert(state, title, message, showCloseBtn, btnTextPrimary, btnTextSecondary, btnIconPrimary, btnIconSecondary, btnIconAlignment="left", btnActionPrimary="", btnActionSecondary="", btnActionClose="", payload={}): + params = { + "state": state, + "title": title, + "message": message, + "showCloseBtn": showCloseBtn, + "btnTextPrimary": btnTextPrimary, + "btnTextSecondary": btnTextSecondary, + "btnIconPrimary": btnIconPrimary, + "btnIconSecondary": btnIconSecondary, + "btnIconAlignment": btnIconAlignment, + "btnActionPrimary": btnActionPrimary, + "btnActionSecondary": btnActionSecondary, + "btnActionClose": btnActionClose, + "payload": payload ## Added 2021-09-23 + } + system.perspective.openPopup(id="alertDialog", view="Alerts/alert", params=params, showCloseIcon=False, draggable=False, resizable=False, modal=True, overlayDismiss=True, btnActionPrimary="closePopup") diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/resource.json new file mode 100644 index 0000000..89ad8fd --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8760862f19269beed428733eab9fd2b032df1cab8ff63580a64f953f9b744f61", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/code.py new file mode 100644 index 0000000..fd6d3e2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/code.py @@ -0,0 +1,15 @@ +def send_page_details(whid, session_id, pageId): + messages_to_send = {} + message_payload = {} + message_list = [] + time_stamp = system.date.toMillis(system.date.now()) + parameters = {"siteId":whid, "sessionId": session_id, + "pageId": pageId, "timestamp":time_stamp} + message_payload["parameters"] = parameters + message_payload["action"] = "pageview" +# message_payload["siteId"] = whid + message_list.append(message_payload) + messages_to_send["message_list"] = message_list + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], + [system.util.jsonEncode(messages_to_send)]) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/resource.json new file mode 100644 index 0000000..8a9ef20 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "43262c4895e2baac9cd088d32343507b4782713958986c62d1d7d6c4e19b97c4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/code.py new file mode 100644 index 0000000..3c9a383 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/code.py @@ -0,0 +1,122 @@ +def send_request(whid,actionCode,parameters): + """ + Creates the request to send to the web socket from a button in SCADA. + Args: + whid = identifier of the warehouse ie MAN2 + actionCode : possible actionCode as per MAP data model (int values): + 0 -> Not used + 1 -> Start + 2 -> Stop + 3 -> Reset + 4 -> Get + 5 -> Set + 6 -> Enable + 7 -> Disable + parameters = dictionary with the parameters of the command + {"commandTarget":id, + "commandCode":action, + "commandTimestamp":time_stamp, + "commandParams":""} + Returns: + a messsage that inform the user about there status of the request + """ + import sys + try: + loggerName=whid+ "_SCADA" + logger = system.util.getLogger(loggerName) + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + messages_to_send = {} + message_payload = {} + message_list = [] + returnMessage="" + time_stamp = system.date.toMillis(system.date.now()) + + payloadParams={} + if not parameters["commandTarget"] or parameters["commandTarget"] == "": + returnMessage = "Missing commandTarget parameter. Command can\'t be executed" + logger.trace(returnMessage) + return returnMessage + payloadParams["commandTarget"]=parameters["commandTarget"] + if not parameters["commandCode"] or parameters["commandCode"] == "": + returnMessage = "Missing commandCode parameter. Command can\'t be executed" + logger.trace(returnMessage) + return returnMessage + payloadParams["commandCode"]=parameters["commandCode"] + payloadParams["commandTimeout"]=2000 + payloadParams["commandTimestamp"]=time_stamp + payloadParams["commandParams"]=parameters["commandParams"] + + message_payload["parameters"] = payloadParams + message_payload["action"] = "command" + message_payload["siteId"] = whid + message_list.append(message_payload) + messages_to_send["message_list"] = message_list + system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], [system.util.jsonEncode(messages_to_send)]) + return "Message sent correctly" + + except: + exc_type, exc_obj, tb = sys.exc_info() + lineno = tb.tb_lineno + exceptionMessage=str(lineno)+" -> "+str(exc_type)+" -> "+str(exc_obj) + errorMessage = "Error while sending a command : "+exceptionMessage + logger.fatal(errorMessage) + return errorMessage + +def send_request_old_to_be_removed(whid, id, action): + + """ + Creates the request to send to the web socket from a button in SCADA. + + Args: + id =Unique material handling equipment id. + request = Type of request i.e Start, Stop, Reset. + Returns: + N/A + """ + """{"action": "command", "parameters": {"": "Reset", "siteId": "DNG2"}}""" + messages_to_send = {} + message_payload = {} + message_list = [] + time_stamp = system.date.toMillis(system.date.now()) + parameters = {"commandTarget":id, "commandCode":action, "commandTimestamp":time_stamp, + "commandToken":"", "commandTimeout":2000, "commandParams":""} + message_payload["parameters"] = parameters + message_payload["action"] = "command" + message_payload["siteId"] = whid + message_list.append(message_payload) + messages_to_send["message_list"] = message_list + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], + [system.util.jsonEncode(messages_to_send)]) + + +def send_download_request(whid, filters, session_id): + + """ + Creates the request to download alarm history + to the web socket from a button in SCADA. + + Args: + whid = four character whid for the project + filters = filter string for passing with the download request. + These a re similar to the url parameters but do not need encoding. + session_id = unique session id of the perspective session. + Returns: + N/A + Example: + {"action":"download", "parameters":{"siteId":"FED1", "sessionId":"bob2", + "filter": "MinimumDuration=360000&Type=1"}} + """ + messages_to_send = {} + message_payload = {} + message_list = [] + time_stamp = system.date.toMillis(system.date.now()) + parameters = {"siteId":whid, "sessionId": session_id, "filter": filters} + message_payload["parameters"] = parameters + message_payload["action"] = "download" +# message_payload["siteId"] = whid + message_list.append(message_payload) + messages_to_send["message_list"] = message_list + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], + [system.util.jsonEncode(messages_to_send)]) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/resource.json new file mode 100644 index 0000000..3332570 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b3d631c91e260e3a83a21de0b66849b1224d0f30723bbae56635ac9781f257db", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/code.py new file mode 100644 index 0000000..a26f93d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/code.py @@ -0,0 +1,31 @@ +def send_shelve_request(whid, ids, action, duration, messages): + + """ + Creates a alarm shelve request to send to the web socket from a button in SCADA. + + Args: + ids = List of strings. Unique material handling equipment ids. + request = String Type of request i.e Start, Stop, Reset. + Returns: + N/A + """ + """{"action": "shelve", "parameters": {"sourceId": "PLC01", "siteId": "DNG2", "durationMinutes": 2, + shelvedTime:""}}""" + messages_to_send = {} + message_list = [] + for i,j in enumerate(ids): + parameters = {} + message_payload = {} + parameters["sourceId"] = j + parameters["siteId"] = whid + parameters["id"] = messages[i] + if action == "shelve": + parameters["durationMinutes"] = duration + time_now = system.date.now() + parameters["shelvedTime"] = (system.date.toMillis(time_now)/1000) + message_payload["parameters"] = parameters + message_payload["action"] = action + message_list.append(message_payload) + messages_to_send["message_list"] = message_list + message_send_tag_path = "[%s_SCADA_TAG_PROVIDER]System/wbsckt_messages_send" % (whid) + system.tag.writeBlocking([message_send_tag_path],[system.util.jsonEncode(messages_to_send)]) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/resource.json new file mode 100644 index 0000000..30756a4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6fe0ffabf275da0b2348d7913fd0d9fd8ca0cd2436899680ff988a079787c9d5", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/code.py new file mode 100644 index 0000000..d11998f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/code.py @@ -0,0 +1,16 @@ +# This function is not intented to be called. This docstring template should be used on all function call. + +def docstring(): + """ + This is an example of Google style. + + Args: + param1: This is the first param. + param2: This is a second param. + + Returns: + This is a description of what is returned. + + Raises: + KeyError: Raises an exception. + """ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/resource.json new file mode 100644 index 0000000..4f2aa19 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "2f96b6d06bbfb141b94b4bd767c94402114b59b5dc036eda71d3333901caf655", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/code.py new file mode 100644 index 0000000..f3228e2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/code.py @@ -0,0 +1,96 @@ +# These scripts are use to download data from the igniton project into any file type. + + +def download_file(filename, data , converter): + """ + This script will download data from ignition perspective to the users computer. + + Args: + filename: The name of the file to be downloaded . + data: The data to be downloaded. May be a string, a byte[], or an InputStream. Strings will be written in UTF-8 encoding. + converter: This is a function that is used to convert the ignition data into the required format for the file. + If not conversion is required then pass a function that just returns original data. + + Returns: + None. + + Raises: + ValueError: Raises an Value erorr if no data or converter is provided. + """ + if not data: + raise ValueError("No data provided. Data is required to perform download ") + + if not converter: + raise ValueError("Please provide a data converter to transform the data") + + _data = converter(data) + system.perspective.download(filename, _data) + +def device_data_converter(data): + """ + This script converts a list of dicts to a dataset, it uses the first dict to set the column headers in the dataset. + + Args: + + data: List of dictionaries. + + Returns: + Ignition Data Set + + Raises: + None + """ + dataset = [] + for index,row in enumerate(data): + if index == 0: + header = row.keys() + row = [] + for i in header: + value = data[index][i] + row.append(value) + dataset.append(row) + + convert_data = system.dataset.toDataSet(header, dataset) + return system.dataset.toCSV(convert_data) + +def detailed_views_converter(data): + """ + This script converts a list of dicts to a dataset, it uses the first dict to set the column headers in the dataset. + + Args: + + data: List of dictionaries. + + Returns: + Ignition Data Set + + Raises: + None + """ + dataset = [] + for index,row in enumerate(data): + if index == 0: + header = row.keys() + row = [] + for i in header: + if i == "Devices": + value = array_to_string(data[index][i]) + else: + value = data[index][i] + row.append(value) + dataset.append(row) + + convert_data = system.dataset.toDataSet(header, dataset) + return system.dataset.toCSV(convert_data) + +def array_to_string(array , deliminator="#"): + converted = "" + if len(array) == 1: + return array[0] + for i , value in enumerate(array): + converted += value + if not i == len(array)-1: + converted += deliminator + + + return converted \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/resource.json new file mode 100644 index 0000000..87bfd20 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "1d4014ee2735a3eec7703c786d171002abaee886526c74e424a7c4a736bf51bb" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/code.py new file mode 100644 index 0000000..b440aeb --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/code.py @@ -0,0 +1,64 @@ +import csv +from StringIO import StringIO + +def check_csv_file(event): + """ + This function checks if the CSV file was saved as CSV-UF8 settings if it has removes extra data bytes from the file. + + Args: + event : Containes the file data to be uploaded + + Returns: + a string representing the file that is to be uploaded. + + Raises: + None + """ + file_bytes = event.file.getBytes() + if bytearray.fromhex("ef bb bf") == bytearray(file_bytes[0:3]): + # Strip first three bytes + file_bytes = file_bytes[3:] + return file_bytes.tostring() + + +def add_device_btn_code(whid, event): + + reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event))) + data ={} + def get_child(): + return { + "Area":"", + "SubArea":"" + } + + for i, v in enumerate(reader): + child = get_child() + child["Area"] = v["Area"] + child["SubArea"] = v["SubArea"] + data[v["Device"]]= child + + + system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/PLC"%whid], system.util.jsonEncode(data)) + + return "Success" + +def add_detailed_view_btn_code(whid, event): + + reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event))) + + data ={} + + def convert_dict_value_to_list(string): + device_list = [] + for i in string.replace("#", ",").split(","): + device_list.append(i.strip()) + return device_list + + for v in reader: + + data[v["DetailedView"]]= convert_dict_value_to_list(v["Devices"]) + + + system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews"%whid], system.util.jsonEncode(data)) + + return "Success" \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/resource.json new file mode 100644 index 0000000..c347b18 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "12cc215bf26d41186c8badf3cdc4d8d099e3879578886b8ad9b27e841aa8e487" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/code.py new file mode 100644 index 0000000..138eeca --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/code.py @@ -0,0 +1,59 @@ +def scada_web_socket_execute(): +#We read a list of tags at the beginning of the script for efficiency. + tags_to_read = system.tag.readBlocking(["Configuration/FC", "Configuration/aws"]) + whid = tags_to_read[0].value + aws_config = system.util.jsonDecode(tags_to_read[1].value) + region = aws_config.get("region") + logger = system.util.getLogger("%s-Web-Socket-Execute" % (whid)) + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + AWS.create_tags.create_web_socket_tags(whid) + Latency.CreateLatencyTags.create_latency_tags(whid) # attempt to create latency lags + check_socket_closed_in_loop = AWS.wbsckt_abort.check_web_socket() + #Check the heartbeat and restart if not recieved within the specified time + check_heartbeat = AWS.heartbeat.check_heartbeat(provider, 120) + if check_heartbeat: + AWS.wbsckt_abort.close_websckt() + AWS.heartbeat.get_heartbeat(provider) + if whid == "" or whid == None: + raise ValueError("FC not configured. A project on the gateway is missing Configuration/FC id") + + elif not region: + raise ValueError("No aws region configured for project") + + elif check_socket_closed_in_loop: + logger.warn("Socket is closed check System/close_socket tag") + + else: + description = provider + "websocket api gateway" + set_global = system.util.getGlobals().setdefault(whid,{}) + running = system.util.getGlobals()[whid].get("wbsckt_running", 0) + if not running: + try: + message_handler = AWS.message_types.A2C_MessageHandler(whid) + args = [whid, provider, region, message_handler, "scada/api/endpoint"] + description = "%s-web-socket-api" + system.util.invokeAsynchronous(AWS.web_socket.web_socket_main, args, description ) + except: + AWS.errors.error_handler(whid, "Web-Socket-Execute") + +def update_execute(): + data = AWS.message_types.Update() + data.read_messages_from_queue() + data.write_tags() + +def status_execute(): + tags_to_read = system.tag.readBlocking(["Configuration/FC", "System/aws_data"]) + whid = tags_to_read[0].value + alarms_data = system.util.jsonDecode(tags_to_read[1].value) +# Alarm script + try: + if AWS.message_types.global_first_connect == False: + Visualisation.status.reset_alarms(whid) + Visualisation.status.global_previous_state = {} + AWS.message_types.global_first_connect = True + status = Visualisation.status.GetStatus(whid, alarms_data) + status.build_status() + status.write_data() + alarms.alarm_count.get_count(whid, alarms_data) + except: + AWS.errors.error_handler(whid, "Status-Visualisation-Script") \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/resource.json new file mode 100644 index 0000000..76625a5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "980f47a278302d85a661539d1a354a255196d4f3a44996dc10c91759ca435525" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/code.py new file mode 100644 index 0000000..daa117a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/code.py @@ -0,0 +1,53 @@ +def create_latency_tags(whid): + logger = system.util.getLogger("%s-Create-Latency-Tags" % (whid)) + if whid != "" and whid != None: + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + tag_paths = {"avg_latency":{"name":"avg_latency", "valueSource": "memory", + "dataType": "String", "value" : ""}, + "aws_data_copy":{"name":"aws_data_copy", "valueSource": "reference", + "dataType": "String", "sourceTagPath": "[~]System/aws_data.value"}, + "first_pass":{"name":"first_pass", "valueSource": "memory", + "dataType": "Boolean", "value" : True}, + "last_alarm_change_ts":{"name":"last_alarm_change_ts", "valueSource": "memory", + "dataType": "DateTime", "formatString": "yyyy-MM-dd h:mm:ss aa"}, + "prev_key":{"name":"prev_key", "valueSource": "memory", + "dataType": "String", "value" : ""}, + "rolling_latency":{"name":"rolling_latency", "valueSource": "memory", + "dataType": "StringArray", "alarmEvalEnabled": True, + "value": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" ],}} + + for k,v in tag_paths.items(): + if not system.tag.exists("%sLatency/%s" % (provider, k)): + base_path = "%s/Latency" % (provider) + system.tag.configure(base_path, v) + logger.info("Created tag %s" % (k)) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/resource.json new file mode 100644 index 0000000..70dbe75 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "0b6c7d57ecf067a82d63be8ea33fd43ced002a52029bff288eca294b661dee82" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/code.py new file mode 100644 index 0000000..e674279 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/code.py @@ -0,0 +1,24 @@ +def AvgCalc(): + ## Code to calc avg latency. + whid = system.tag.readBlocking(["Configuration/FC"])[0].value + + # Read tag value + tag_values = system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency'% whid])[0].value + + # Convert string timestamps to milliseconds + timestamps = [int(value) for value in tag_values] + + if 0 in timestamps: + return + else: + # Calculate the average latency in milliseconds + avg_latency = round(sum(timestamps) / len(tag_values), 3) + zero_list = [0]*30 + circular_buffer = '[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency.value'% whid + avg_latency_path ='[%s_SCADA_TAG_PROVIDER]Latency/avg_latency'% whid + + # clear array to all 0's so we can wait to trigger until 30 new records have happened and write new avg + system.tag.writeBlocking([avg_latency_path,circular_buffer], [avg_latency,zero_list]) # writing the avg_latency back to tag on purpose for visual. + + # Call Dynamodb write script, passing in site and latency to be written. + Latency.WriteToDynamo.DynamoWriter(whid,avg_latency) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/resource.json new file mode 100644 index 0000000..23732bf --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "9e099c3ee7ca9ad241695d66aef70122ea6e581519571f188d2d08d250510aa4" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/code.py new file mode 100644 index 0000000..343918d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/code.py @@ -0,0 +1,82 @@ +def latencyCalc(): + import json + import system + from java.lang import Exception as JException, Thread + import time + + whid = system.tag.readBlocking(["Configuration/FC"])[0].value + aws_data,first_pass = system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/aws_data_copy'% whid,'[%s_SCADA_TAG_PROVIDER]Latency/first_pass'% whid]) + json_data = json.loads(aws_data.value) + first_pass = first_pass.value + ids = [] + + # in instances where aws_data tag has been reset + if not json_data: + system.tag.writeBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/first_pass.value'% whid], [1]) + return + + #### check if this is the first time running. if it is, set the values in prev_key to get this kicked off and then set the flag tag to False. + if first_pass: + if not json_data: + return + for key in json_data: + ids.append(str(key)) + system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Latency/prev_key"% whid,"[%s_SCADA_TAG_PROVIDER]Latency/first_pass"% whid],[ids,0]) + return + + # get a list of names that are new and can be used to calculate latency. + # added try except in here in case there is a time when new prev keys are present during first pass or a reset of the tag accidentely. + try: + prev_ids = set(system.util.jsonDecode(system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/prev_key'% whid])[0].value)) + except: + system.tag.writeBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/first_pass.value'% whid], 1) + return + to_be_processed = [] + new_to_be_processed = {} + for key in json_data: + if key not in prev_ids: + to_be_processed.append(str(key)) + + if to_be_processed: + new_to_be_processed = {key: json_data[key] for key in to_be_processed if key in json_data} + + #### This class will read the aws_data tag and calculate the latency of all the tags provided(newly added tags). + class TimestampLatencyCollector: + + def __init__(self): + self.latencies = [] + + def process_dict(self, data_dict): + import system + current_time_ms = system.date.toMillis(system.date.now()) # Current time in milliseconds + + for key, value in data_dict.items(): + timestamp_ms = data_dict[key]['timestamp'] + # Calculate latency in milliseconds + latency_ms = current_time_ms - timestamp_ms + self.latencies.append(latency_ms) + + if new_to_be_processed: + last_alarm_change = '[%s_SCADA_TAG_PROVIDER]Latency/last_alarm_change_ts.value'% whid + + # Create an instance of the TimestampLatencyCollector + collector = TimestampLatencyCollector() + + # Process the nested dictionary + collector.process_dict(new_to_be_processed) + + #read in circular buffer of latencies + circular_buffer_tag_path = '[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency.value'% whid + circular_buffer = system.tag.readBlocking([circular_buffer_tag_path])[0].value + + for latency in collector.latencies: + circular_buffer.append(str(latency)) + + # keep only the last 30 entries. + circular_buffer = circular_buffer[-30:] + system.tag.writeBlocking([circular_buffer_tag_path,last_alarm_change], [circular_buffer,system.date.now()]) + + persistence = [] + for key in json_data: + persistence.append(str(key)) + system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Latency/prev_key"% whid],[persistence]) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/resource.json new file mode 100644 index 0000000..25c07e4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "7b13dd2622dceffe9cc9485dff126f01df828f4f6c509b369b7401b72879ee36" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/code.py new file mode 100644 index 0000000..d31f088 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/code.py @@ -0,0 +1,77 @@ +def DynamoWriter(site,latency): + import json + from pprint import pformat + import boto3 + from datetime import datetime + from decimal import Decimal + import time + + LOGGER = system.util.getLogger('latency_to_dynamodb_log') + + # Get STAGE variable + + API_ID, STAGE, ACC_ID, FUNC_URL = AWS.secrets_manager.get_secret(str(site), 'scada/api/endpoint') + API_ID,ACC_ID,FUNC_URL = None, None, None # set these to None becuase they are not used in here but must be returned during the call. + + # Make sure STAGE is valid. no gamma stage configured + if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: + STAGE = 'beta' + if STAGE == 'gamma': + STAGE = 'beta' + + STAGE_CONFIG = { + 'alpha':{ + 'region' : 'us-east-1', + 'roleArn' : 'arn:aws:iam::905418469996:role/ignition_to_aws_latency_alpha', + 'tableName' : 'SCADA_Latency_alpha' + }, + 'beta': { + 'region':'us-east-1', + 'roleArn': 'arn:aws:iam::381492071451:role/ignition_to_aws_latency_beta', + 'tableName' : 'SCADA_Latency_beta' + + }, + 'prod': { + 'region':'us-east-1', + 'roleArn': 'arn:aws:iam::891377003949:role/ignition_to_aws_latency_prod', + 'tableName' : 'SCADA_Latency_prod' + } + } + + + # create sts session to get credentials from EC2 + sts_client = boto3.client('sts') + region_name = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-east-1') + + assume_role_response = sts_client.assume_role( + RoleArn = STAGE_CONFIG.get(STAGE, 'alpha').get('roleArn', 'arn:aws:iam::905418469996:role/ignition_to_aws_latency_alpha_test'), + RoleSessionName = 'AssumeRole' + ) + + temp_credentials = assume_role_response['Credentials'] + + # create session using the temp creds + b3_session = boto3.Session( + aws_access_key_id = temp_credentials['AccessKeyId'], + aws_secret_access_key = temp_credentials['SecretAccessKey'], + aws_session_token = temp_credentials['SessionToken'], + region_name = 'us-east-1', + ) + + # create a dynamodb session + dynamodb = b3_session.resource('dynamodb') + table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'alpha').get('tableName', 'SCADA_Latency_alpha')) + + # write data directly to dynamodb table + try: + response = table.put_item(Item={ + 'site':site, + 'timestamp':int(time.time()*1000), + 'latency':str(round( int(Decimal(latency)) / 1000.0 , 3 ) ), + 'source':3, + 'TTL':int(time.time()+ (30*60) ) + } + ) + + except Exception as e: + LOGGER.error(str(e)) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/resource.json new file mode 100644 index 0000000..a71f445 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "394225072130bb05c476503e9bc72409d2a237308ea3861f1d5b8ca200412061" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/code.py new file mode 100644 index 0000000..a355cbf --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/code.py @@ -0,0 +1,105 @@ +############################################################################################# +# Purpose: This package contains all the modules that get called by the symbol library # +# and edit item views. These modules MAKES calls to S3 under the SCADA account. # +# Some of these modules depend on the AWS > S3 manager. # +# Login: Date: #Comment: Version: # +# dmamani 1/4/23 Release to Production V1 # +# # +############################################################################################# + +from AWS.s3 import S3Manager +from datetime import datetime +from pprint import pprint +import json + +BUCKET_REGION = "us-east-1" +BUCKET_NAME = "map-ignition-parent-docs" +SYMBOL_LIBRARY_JSON = "symbol_library.json" + +def fetch_library(backup_path=SYMBOL_LIBRARY_JSON, username=None): + # - Create a client to interact with AWS S3 + s3 = S3Manager(username=username) + # - Fetch the object from S3. If backup path was provided, use that, otherwise fetch the primary file. Convert + # data response to a string + library_json = s3.download(backup_path or SYMBOL_LIBRARY_JSON, bucket=BUCKET_NAME, region=BUCKET_REGION) + return library_json + +def list_backups(username=None): + # - Create a client to interact with AWS S3 + s3 = S3Manager(username=username) + # - Fetch list of objects in S3 from the backups folder. List comp is used to convert response objects from + # aws to a simple list of S3 paths to each Backup object + backup_objects = [] + + for backup_object in s3.list_objects(bucket=BUCKET_NAME, region=BUCKET_REGION): + if backup_object['Key'] != SYMBOL_LIBRARY_JSON: + backup_objects.append(backup_object['Key']) + return sorted(backup_objects, reverse=True) + +def write_library(library, backup=True, username=None): + # - Check type of object to write. Raise exception if it isnt a dictionary + if not isinstance(library, dict): + raise ValueError("'library' argument must be a dictionary of the entire symbol " + "library dataset, not %" % type(library)) + # - Create a client to interact with AWS S3 + library = json.dumps(library).encode() + s3 = S3Manager(username=username) + if backup: + resp = s3.upload( + library, + "%s--%s" % (datetime.utcnow().strftime('%m-%d-%y %H:%M:%S.%f'), username), + bucket=BUCKET_NAME, + region=BUCKET_REGION, + content_type='application/json' + ) + resp = s3.upload(library, SYMBOL_LIBRARY_JSON, bucket=BUCKET_NAME, region=BUCKET_REGION, content_type='application/json') + return resp + +def update_symbol_library(path, username=None, **value): + # - Fetch the most recent library from S3 + current_lib = fetch_library(username=username) + # - Update the given path with the **value dictionary of key-value arguments + if path in current_lib: + current_lib[path].update(value) + else: + current_lib[path]=value + print(current_lib[path]) + print(value) + # - Write the modified library to S3 + resp = write_library(current_lib, username=username) + return resp + + +def delete_symbol(path, username=None): + current_lib = fetch_library(username=username) + try: + del current_lib[path] + return write_library(current_lib, username=username) + except KeyError: + raise Exception("path %s does not exist" % path) + +def rollback(backup_path, username=None): + # - Fetch the backup object + library = fetch_library(backup_path, username=username) + # - Write it to the primary location. Disable backup to prevent duplicate backups + write_library(library, backup=False, username=username) + + + # - Gets List of Categories +def list_categories(library_items): + # - Example of Entry: !!! insert example here bro + categories = list(set([entry["category"] for entry in library_items.values() if entry["category"]])) + categories = sorted(categories) + categories.insert(0,"ALL") + return categories + + # - Searches List of +def search_items(library_items, category): + if category == 'ALL' : + items = [name for name, entry in library_items.items()] + else: + items = [name for name, entry in library_items.items() if entry["category"] == category] + # - Obtains the last part of the path for example ( + items.sort(key = lambda x : x.split("/")[len(x.split("/"))-1]) + return items + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/resource.json new file mode 100644 index 0000000..daccd85 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "128b4bab2d51c32052d1d467e473fb3f4e28655dd0d1ede87dadbb64fc9e2b0c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/code.py new file mode 100644 index 0000000..49ef45f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/code.py @@ -0,0 +1,92 @@ +def create_home_page(self): + self.session.custom.covert = True + fc = self.session.custom.fc + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc) + data_to_read = system.tag.readBlocking([tag_provider+"Configuration/PLC"]) + data = system.util.jsonDecode(data_to_read[0].value) + try: devices_list = sorted(data.keys()) + except: devices_list = [] + + if len(devices_list)>0: + instances = [] + dashboard_devices = {} + for i in devices_list: + area = data[i]['Area'] + if len(data[i]['Area'])>0: + + dashboard_devices.update({i:area}) + else: + dashboard_devices.update({i:'unknown'}) + instances.append({ + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "instancePosition": {}, + "tagProps": [ + i, + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ],"Counts":{"Diag":0, "High":0, "Low":0, "Medium":0}, + "area":data[i]['Area'], + "subarea":data[i]['SubArea'] + }) + self.custom.Devices = sorted(dashboard_devices.items(), key=lambda x:x[1], reverse = False) + self.getChild("FlexRepeater").props.instances = sorted(instances, reverse = False) + +def get_counters(alarm_counters, controller): + counters = alarm_counters.get(controller,{"High":0, "Medium":0, "Low":0, "Diagnostic":0}) + return counters + + +def get_device_values(tag_provider, devices_list): + tag_paths_to_read = [] + read_values = [] + for device in devices_list: + tag_path = "%s%s/ALARMST" % (tag_provider, str(device[0])) + tag_paths_to_read.append(tag_path) + values = system.tag.readBlocking(tag_paths_to_read) + for i,j in enumerate(values): + value = values[i].value + if value == None: + read_values.append(0) + else: + read_values.append(value) + return read_values + + +def update_home_status(self): + orderBy = self.session.custom.alarm_filter.orderby + fc = self.session.custom.fc + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc) + alarm_counters = system.tag.readBlocking([tag_provider + "System/device_count"])[0].value + counters_decoded = system.util.jsonDecode(alarm_counters) + if not counters_decoded: + counters_decoded = {} + devices_list = self.custom.Devices + values = get_device_values(tag_provider, devices_list) + + devices_only = [] + for device in devices_list: + devices_only.append(str(device[0])) + + if orderBy == True: + zipped_list = zip(values, devices_only) + else: + zipped_list = sorted(zip(values, devices_only), reverse = True) + + devices_sorted = [y for x, y in (zipped_list)] + for i,j in enumerate(devices_sorted): + counters = get_counters(counters_decoded, j) + self.getChild("FlexRepeater").props.instances[i].tagProps[0] = j + self.getChild("FlexRepeater").props.instances[i].Counts.Diag = counters.get("Diagnostic") + self.getChild("FlexRepeater").props.instances[i].Counts.Low = counters.get("Low") + self.getChild("FlexRepeater").props.instances[i].Counts.Medium = counters.get("Medium") + self.getChild("FlexRepeater").props.instances[i].Counts.High = counters.get("High") diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/resource.json new file mode 100644 index 0000000..4c1b190 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "30d71a9637f8553fe20ffa60bf8ac71d7d9c2b4691d72b6e788263ea16ae0497" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/code.py new file mode 100644 index 0000000..204e23f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/code.py @@ -0,0 +1,162 @@ +global_previous_state = {} +class GetStatus(): + """This class calculates the highest priority + alarm active for all parts of the source id. It scans the active alarms list, + splits each source id and returns the highest priority alarm to a dict object id_to_status. + It stores the previuos state of the dict object and compares current to previous. + ALARMST tags are then updated if they have been removed, added or the value changed + Args: + whid : Warehouse id for the project/ tag provider(string) + alarm_data: Current active alarms(dict) + KeyError: N/A""" + def __init__(self, whid, alarm_data): + self.whid = whid + self.alarm_data = alarm_data + self.id_to_status = {} + self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + self.logger = system.util.getLogger("%s-Update-Visualisation" % (whid)) + + def update_status(self, item, priority): + if(self.id_to_status.get(item) is None or + self.id_to_status.get(item) < priority): + self.id_to_status[item] = priority + + def build_status(self): + for k, v in self.alarm_data.items(): + equipment, device, sub_device = "","","" + alarm_dict = v + source_id = alarm_dict.get("sourceId") + priority = alarm_dict.get("priority") + state = alarm_dict.get("state") + if state != 2: + id_elements = source_id.split("/") + controller = id_elements[0] + if len(id_elements) > 4: + self.logger.error("Incorrect length for source id") + else: + while True: + path = "/".join(id_elements) + self.update_status(path, priority) + id_elements.pop() + if len(id_elements) == 0: + break + global global_previous_state + self.calculate_diff() + global_previous_state = self.id_to_status + + def build_alarm_paths_and_values(self, keys, paths, values): + for item in keys: + value = self.id_to_status.get(item) + tag_path = "%s%s/%s" % (self.tag_provider, item, "ALARMST") + paths.append(tag_path) + values.append(value) + return paths, values + + def write_to_tags(self, message, paths, values): + system.tag.writeBlocking(paths, values) + self.logger.info(message + str(paths)) + + def calculate_diff(self): + set_previous_values = set(global_previous_state.keys()) + set_current_values = set(self.id_to_status.keys()) + intersect = set_current_values.intersection(set_previous_values) + removed_keys = set_previous_values - intersect + added_keys = set_current_values - intersect + changed_values = set(k for k in intersect if global_previous_state[k] != self.id_to_status[k]) + tag_paths_to_delete = [] + values_to_delete = [] + for i in removed_keys: + tag_path = "%s%s/%s" % (self.tag_provider, i, "ALARMST") + tag_paths_to_delete.append(tag_path) + values_to_delete.append(0) + + tag_paths_to_add, values_to_add = self.build_alarm_paths_and_values(added_keys, [], []) + for item in added_keys: + self.create_alarm_state_tags(self.tag_provider + item) + changed_tag_paths, changed_values = self.build_alarm_paths_and_values(changed_values, [], []) + + if changed_tag_paths: + self.write_to_tags("Changed paths = ", changed_tag_paths, changed_values) + + if tag_paths_to_add: + self.write_to_tags("Paths added = ", tag_paths_to_add, values_to_add) + + if tag_paths_to_delete: + self.write_to_tags("Deleted paths = ", tag_paths_to_delete, values_to_delete) + + def write_data(self): + status_encoded = system.util.jsonEncode(self.id_to_status) + system.tag.writeAsync([self.tag_provider + + "System/IdToStatus"], + [status_encoded] + ) + + def create_alarm_state_tags(self, source_id): + if not system.tag.exists(source_id +"/ALARMST"): + tag = {"name": "ALARMST", + "valueSource": "memory", + "dataType": "Int1", + "value": 0} + create_tag = system.tag.configure(source_id, tag) + if not create_tag[0].isGood(): + logger.warn("Failed to create tag: " + str(source_id)) + +def reset_tags(provider, query): + results = system.tag.query(provider, query) + tags_to_write = [] + values_to_write = [] + for i in results: + tags_to_write.append(str(i["fullPath"])) + values_to_write.append(0) + if tags_to_write: + system.tag.writeBlocking(tags_to_write, values_to_write) + +def reset_alarms(whid): + logger_name = "%s-Alarm-Reset" % (whid) + logger = system.util.getLogger(logger_name) + logger.warn("Alarms have been reset") + provider = "%s_SCADA_TAG_PROVIDER" % (whid) + limit = 100 + query = { + "options": { + "includeUdtMembers": True, + "includeUdtDefinitions": False + }, + "condition": { + "path": "*ALARMST*", + "attributes": { + "values": [], + "requireAll": True + } + }, + "returnProperties": [ + "tagType", + "quality" + ] + } + reset_tags(provider, query) + +def reset_disconnects(whid): + logger_name = "%s-Disconnects-Reset" % (whid) + logger = system.util.getLogger(logger_name) + provider = "%s_SCADA_TAG_PROVIDER" % (whid) + limit = 100 + query = { + "options": { + "includeUdtMembers": True, + "includeUdtDefinitions": False + }, + "condition": { + "path": "*DCN*", + "attributes": { + "values": [], + "requireAll": True + } + }, + "returnProperties": [ + "tagType", + "quality" + ] + } + reset_tags(provider, query) + logger.warn("DCN tags have been reset") diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/resource.json new file mode 100644 index 0000000..be14c70 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "6af52a420fb3cde4109dce1d5db7dc75df5be6e1117822537990de4e0350549f", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/code.py new file mode 100644 index 0000000..f6f7490 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/code.py @@ -0,0 +1,66 @@ +#from logging import raiseExceptions + + +class GetStatus(): + + def __init__(self, whid, alarm_data): + self.alarm_data = alarm_data + self.priority_dict = {} + self.id_to_status = {} + self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + self.logger = system.util.getLogger("%s-Update-Visualisation" % (whid)) + + def convert_priority(self, priority): + #The alarm priority is converted into a status + #This is based on the highest active alarm priority + if str(priority) == "0": + return 4 + elif str(priority) == "1": + return 3 + elif str(priority) == "2": + return 2 + elif str(priority) == "3" or priority == "4": + return 1 + else: + return 6 + + def check_priority(self, alarm_id, priority): + #We check to see if the current priority is greater + #than the current priority in the priority_dict. This is + #because the status is based on the active alarm. With the + #highest priority. + controller_id = alarm_id.split("/")[0] + if self.priority_dict.get(controller_id) is None: + self.priority_dict[controller_id] = {} + self.priority_dict[controller_id][alarm_id] = self.convert_priority(priority) + + elif self.priority_dict[controller_id].get(alarm_id) is None: + self.priority_dict[controller_id][alarm_id] = self.convert_priority(priority) + + elif self.priority_dict[controller_id].get(alarm_id) < priority: + self.priority_dict[controller_id][alarm_id] = ( + self.convert_priority + (priority) + ) + + def run_status(self): + for i in self.alarm_data: + alarm_id = i + priority = self.alarm_data.get(i, {}).get("priority") + if priority != None: + self.check_priority(alarm_id, priority) + + def update_tags(self): + device_paths = [] + status_values = [] + if isinstance(self.priority_dict, dict): + for i in self.priority_dict: + device_path = "%sTags/%s/IdToStatus/json" % (self.tag_provider, i) + device_paths.append(device_path) + status_json = self.priority_dict.get(i) + status_values.append(system.util.jsonEncode(status_json, 4)) + self.logger.info("device paths " + str(device_paths)) + else: + raise TypeError("Not a python dictionary") + system.tag.writeAsync(device_paths, status_values) + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/resource.json new file mode 100644 index 0000000..41a4373 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "7c5960050305b6f0150e64441829db667869536d0ff3cdf5d6777c42ad9938b1", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/code.py new file mode 100644 index 0000000..b9ae40a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/code.py @@ -0,0 +1,83 @@ +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +import json +import boto3 +from pprint import pformat + +REGION = 'us-east-2' +SERVICE = 'execute-api' +ENDPOINT = 'https://l7o38q47a6.execute-api.us-east-2.amazonaws.com/default/ScadaProductMetrics' +LOGGER = system.util.getLogger('activityLog') + +def openSession(): + CREDS = boto3.Session().get_credentials() + AWS_ACCESS_KEY_ID = CREDS.access_key + AWS_SECRET_ACCESS_KEY = CREDS.secret_key + TOKEN = CREDS.token + + OPENER = aws_urlopen( + AWS_ACCESS_KEY_ID, + AWS_SECRET_ACCESS_KEY, + REGION, + SERVICE, + session_token=TOKEN, + verify=False) + return OPENER + +def createActivityDetails(session, resource_type, resource, current_page, start_time, end_time = None): + user = session.props.auth.user.userName + session_id = session.props.id + site = session.custom.fc + start_time = system.date.format(start_time, 'yyyy-MM-dd HH:mm:ss') + end_time = system.date.format(end_time, 'yyyy-MM-dd HH:mm:ss') if end_time != None else end_time + user_UTCoffset = session.props.device.timezone.utcOffset + activityDetails = {'username':user, + 'session_id':session_id, + 'site': site, + 'start_time': start_time, + 'end_time':end_time, + 'user_UTCoffset': user_UTCoffset, + 'resource_type': resource_type, + 'resource': resource, + 'current_page': current_page} + return activityDetails + +def logActivity(session, resource_type, resource, current_page, start_time, end_time = None): + activityDetails = createActivityDetails(session, resource_type, resource, current_page, start_time, end_time) + user = session.props.auth.user.userName + opener = openSession() + params = activityDetails + payload = json.dumps(params) + method = 'POST' + # in the headers the Ignition session username (session.props.auth.user.userName) must be supplied as 'X-Ignition-User' + headers = { + 'Content-type': 'application/json', + 'X-Ignition-User': user + } + req = Request(url=ENDPOINT, method=method, data=payload, headers=headers) + # open the request and process the read + try: + resp = opener(req) + response = json.loads(resp.read()) + error = None + print pformat(response) + except HTTPError, e: + error = str(e) + response = None + print error + LOGGER.info(error) + return {'error': error, 'response':response } + +def callLogger(self, resource_type, resource = None, current_page= None): + """ self is reference to the view. So if calling from shutdown script on the view, pass self. + If calling from a component, pass self.view""" + if self.session.custom.enable_activity_logging: + if self.session.props.device.type != 'designer': + end_time = system.date.now() if resource_type == 'page' else None + start_time = self.custom.activityLogger.start_time + pageid = self.custom.activityLogger.pageid + resource = pageid if resource == None else resource + current_page = pageid if current_page == None else current_page + logActivity(self.session, resource_type, resource, current_page, start_time, end_time) + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/resource.json new file mode 100644 index 0000000..0f32dbf --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "878c3b0bc9427730cec39dda6e04ae4e1df20462a337ef807c5e449c59b7653c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/code.py new file mode 100644 index 0000000..acbbb6b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/code.py @@ -0,0 +1,223 @@ +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +import json +import system +import boto3 +from pprint import pformat + +STAGE = 'prod' +STAGE_CONFIG = { + 'alpha':{ + 'region':'us-east-1', + 'endpoint': 'https://0wuzuy9rx3.execute-api.us-east-1.amazonaws.com/prod/user-activity-logger' + }, + 'beta': { + 'region':'us-east-1', + 'endpoint': 'https://33ymuc1b2a.execute-api.us-east-1.amazonaws.com/prod/user-activity-logger' + }, + 'prod': { + 'region':'us-east-1', + 'endpoint': 'https://ahikprejp4.execute-api.us-east-1.amazonaws.com/prod/user-activity-logger' + } +} +REGION = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-east-1') +SERVICE = 'execute-api' +ENDPOINT = STAGE_CONFIG.get(STAGE, 'alpha').get('endpoint', 'https://0wuzuy9rx3.execute-api.us-east-1.amazonaws.com/prod/user-activity-logger') +LOGGER = system.util.getLogger('productMetrics') + +def openSession(): + CREDS = boto3.Session().get_credentials() + AWS_ACCESS_KEY_ID = CREDS.access_key + AWS_SECRET_ACCESS_KEY = CREDS.secret_key + TOKEN = CREDS.token + + OPENER = aws_urlopen( + AWS_ACCESS_KEY_ID, + AWS_SECRET_ACCESS_KEY, + REGION, + SERVICE, + session_token=TOKEN, + verify=False) + return OPENER + +def formatPayload(payload): + """Formats the payload based on what API expects to receive in the payload + Also adds in some defaults (nulls) for the optional fields in case they are skipped from the payload + Since defaults are not defined to required fields, will throw an error if they are not provided in the payload + Args: + payload (dict):all the fields that need to be sent to the API + + Returns: + dict: dict formatted correctly for the API call + """ + data = { + "project_id": "scada-activity-logger", #key used to log hashed user product metrics in backend, not the name of ignition project. + "stage": payload.get("stage"), + "plugin": "scada_activity_logger", + "payload": { + "username": payload.get("username"), + "session_id": payload.get("session_id"), + "site": payload.get("site"), + "start_time": payload.get("start_time"), + "end_time": payload.get("end_time", None), + "user_UTCoffset": payload.get("user_UTCoffset", None), + "resource_type": payload.get("resource_type"), + "resource": payload.get("resource"), + "current_page": payload.get("current_page"), + "concurrent_users": payload.get("concurrent_users", getConcurrentUsers()) + } + } + return data + +def getConcurrentUsers(): + """Get the number of concurrent user session for the current project + + Returns: + int: number of concurrent users + """ + project_name = system.project.getProjectName() + concurrent_users = len(system.perspective.getSessionInfo()) + return concurrent_users + +def createActivityPayload(viewObj, resource_type, resource = None, current_page= None): + """Creates the activity payload for hashed user product metrics + Typically called from view shutdown event script + Uses the info from the view's custom param named activity_logger and session params to build the payload + + Args: + viewObj: reference to the view (since custom param activity_logger is created on the view). If calling this function from a component pass self.view, if calling from view event scripts, pass self + resource_type (string): page/session/click + resource (string, optional): The resource that user interacted with. page name if interaction was with a page, feature/button name if it was a user click type interaction. Defaults to None. + current_page (string, optional): Page name that the user is on when the interaction takes place. Defaults to None. + + Returns: + dict: payload that needs to be formatted before sending to the API + """ + if viewObj.session.custom.product_metrics.enable and viewObj.session.props.device.type != 'designer': + # since viewObj is a reference to the view, viewObj.session is reference to session + session = viewObj.session + stage = session.props.gateway.address + user = session.props.auth.user.userName + session_id = session.props.id + site = session.custom.fc + start_time = system.date.format(viewObj.custom.activityLogger.start_time, 'yyyy-MM-dd HH:mm:ss') + end_time = None + user_UTCoffset = session.props.device.timezone.utcOffset + concurrent_users = getConcurrentUsers() + if resource_type == 'page': + end_time = system.date.format(system.date.now(), 'yyyy-MM-dd HH:mm:ss') + try: + pageid = viewObj.custom.activityLogger.pageid + resource = pageid if resource == None else resource + current_page = pageid if current_page == None else current_page + except: + pass + if resource_type == 'click': + start_time = system.date.format(system.date.now(), 'yyyy-MM-dd HH:mm:ss') + end_time = None + try: + pageid = viewObj.custom.activityLogger.pageid + # resource = pageid if resource == None else resource + current_page = pageid if current_page == None else current_page + except: + pass + + payload = { + "stage": stage, + "username": user, + "session_id": session_id, + "site": site, + "start_time": start_time, + "end_time": end_time, + "resource_type": resource_type, + "resource": resource, + "current_page": current_page, + "user_UTCoffset": user_UTCoffset, + "concurrent_users": concurrent_users + } + activityPayload = formatPayload(payload) + return activityPayload + else: + return None + +def callActivityLoggerAPI(activityPayload): + """Makes a post api call with the provided payload to log hashed user product metrics + Handles converting the payload from dict to json + + Args: + activityPayload (dict): Final payload that needs to be sent to the API + Function will convert the payload to json + """ + if activityPayload: + opener = openSession() + params = activityPayload + payload = json.dumps(params) + method = 'POST' + # in the headers the Ignition session username (session.props.auth.user.userName) must be supplied as 'X-Ignition-User' + headers = { + 'Content-type': 'application/json', + } + req = Request(url=ENDPOINT, method=method, data=payload, headers=headers) + # open the request and process the read + try: + resp = opener(req) + response = json.loads(resp.read()) + error = None + except HTTPError, e: + error = str(e) + response = None + system.perspective.print(error) + LOGGER.info(error) + return {'error': error, 'response':response } + +def callLogger(viewObj, resource_type, resource = None, current_page= None): + """Combines the createActivityPayload and callActivityLoggerAPI to log hashed user product metrics + Typically called from view shutdown event script + Uses the info from the view's custom param named activity_logger and session params to build the payload + """ + activityPayload = createActivityPayload(viewObj, resource_type, resource, current_page) + if activityPayload: + callActivityLoggerAPI(activityPayload) + + + +def testapi(): + print STAGE + user = 'ankikarw' + opener = openSession() + params = { + "project_id": "scada-activity-logger", + "stage": "api test alpha", + "plugin": "scada_activity_logger", + "payload": { + "username": "user", + "session_id": "1234567989", + "site": "EWR4", + "start_time": "2023-11-06 10:45:25", + "end_time": "2023-11-06 10:57:18", + "user_UTCoffset": "-8", + "resource_type": "page", + "resource": "home", + "current_page": "home", + "concurrent_users": "5" + } + } + payload = json.dumps(params) + method = 'POST' + headers = { + 'Content-type': 'application/json', + } + req = Request(url=ENDPOINT, method=method, data=payload, headers=headers) + # open the request and process the read + try: + resp = opener(req) + response = json.loads(resp.read()) + error = None + print response + except HTTPError, e: + error = str(e) + response = None + print error + LOGGER.info(error) + return {'error': error, 'response':response } \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/resource.json new file mode 100644 index 0000000..a73aca0 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "d8f03e9a9e7376fe2eb7439a956679300704c65bb0b8121bd9f23a466661f933" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/code.py new file mode 100644 index 0000000..0672839 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/code.py @@ -0,0 +1,47 @@ +def handleClick(data): + if not data or len(data) != 1: + return + + row = data[0] + clickedTagPath = row.get("FullTag", "") + MCM = row.get("Location", "") + + MCM_Pages_Map = { + "MCM01": "Detailed-Views/MCM01 Bulk Inbound", + "MCM02": "Detailed-Views/MCM02 Fluid Inbound", + "MCM03": "Detailed-Views/MCM03 Fluid Inbound", + "MCM04": "Detailed-Views/MCM04 Sorter Destination, Chutes and Bypass", + "MCM05": "Detailed-Views/MCM05 Sorter Destination and Chutes", + } + + + page = MCM_Pages_Map.get(MCM) + + if not page: + return + + device = row.get("Device", "") + + if not device or not clickedTagPath: + return + + pathToDevice = "" + + # check for the mcm + if "MCM" in device: + parts = clickedTagPath.split("/") + pathToDevice = "/".join(parts[:3]) + + else: + index = clickedTagPath.find(device) + if index == -1: + return + pathToDevice = clickedTagPath[:index + len(device)] + + priority = row.get("Priority", "") + + #combining with priority + combined = pathToDevice + "||" + priority + + # Navigate to target view, passing the tag to highlight + system.perspective.navigate(view = page, params = {'highlightTagPath': str(combined)}) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/resource.json new file mode 100644 index 0000000..3390aca --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-04T15:05:02Z" + }, + "hintScope": 2, + "lastModificationSignature": "4beb5bf5d18a730606e45cfc72ba5a688bc51e26336b2acdddbadf46a1c3df77" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/code.py new file mode 100644 index 0000000..f8810a1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/code.py @@ -0,0 +1,24 @@ +def get_count(whid, alarm_data): + device_count = {} + provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) + int_to_priority ={"5":"Critical", "4":"High", "3":"Medium", + "2":"Low", "1":"Diagnostic"} + for k,v in alarm_data.items(): + source_id = k + device_id = source_id.split("/")[0] + alarm_data = v + priority = str(v["priority"]) + priority_string = int_to_priority.get(priority, "Unknown") + check = device_count.get(device_id) + if check == None: + device_count[device_id] = {"Critical":0, "High":0, "Medium":0, "Low":0, "Diagnostic":0, "Unknown":0} + device_count[device_id][priority_string]+=1 + else: + device_count[device_id][priority_string]+=1 + counts_encoded = system.util.jsonEncode(device_count) + system.tag.writeAsync([provider+"System/device_count"],[counts_encoded]) + + + + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/resource.json new file mode 100644 index 0000000..b3e86d2 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3974216abfa19c207670be1806df6c8763b3be4aedcc3301886ef845d827672d", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/code.py new file mode 100644 index 0000000..8aa1a0f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/code.py @@ -0,0 +1,64 @@ +def main_alarm_table(): + """ + Returns alarms states to filter + the main alarm table + + Args: + None + + Returns: + Returns a list of filters. + + Raises: + None + """ + return["Active", "Not Active"] + +def shelved_alarm_table(): + """ + Returns alarms states to filter + the shelved alarm table + + Args: + None + + Returns: + Returns a list of filters. + + Raises: + None + """ + return["Shelved"] + +def docked_alarm_table(): + """ + Returns alarms states to filter + the docked alarm table + + Args: + None + + Returns: + Returns a list of filters. + + Raises: + None + """ + return["Active", "Not Active", "Shelved"] + +def information_alarm_table(): + """ + Returns alarms states to filter + the information pop up + alarm table. + + Args: + None + + Returns: + Returns a list of filters. + + Raises: + None + """ + return["Active", "Not Active", "Shelved"] diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/resource.json new file mode 100644 index 0000000..d1eaadc --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "9d05975346c2dbdf6c194935df58ecced52502dc24e00a97f1d5a29ea4fb638c", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/code.py new file mode 100644 index 0000000..a6ea197 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/code.py @@ -0,0 +1,32 @@ +def get_alarm_state(state): + """ + This function returns a string representing the current alarm state from + a state argument enum 1 to 7. + Args: + state: Enum for current alarm state. + Returns: + String representing current alarm state. + + Raises: + KeyError: None. + """ + if state == 0: + return "Not Active" + elif state == 1: + return "Active" + elif state == 2: + return "Shelved" +# elif state == 4: +# return "Return to unacknowledged" +# elif state == 5: +# return "Shelved state" +# elif state == 6: +# return "Suppressed-by-design" +# elif state == 7: +# return "Out-of-service state" + else: + return "Unknown" + + + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/resource.json new file mode 100644 index 0000000..284fe0f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e0f5cc1990b19ac2eba792d17f18d36747943c776c6ac9b6a6373ceadf207494", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/code.py new file mode 100644 index 0000000..d11dd64 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/code.py @@ -0,0 +1,195 @@ +import time +from datetime import datetime +startTime = datetime.now() + +def convert(duration): + current_seconds = round(time.time()) + seconds_duration = (current_seconds - (duration/1000)) + m, s = divmod(seconds_duration, 60) + h, m = divmod(m, 60) + return seconds_duration + + +def get_timestamp(duration): + timestamp = system.date.fromMillis(duration) + return timestamp + +def check_device_in_device_list(device, device_list): + if len(device_list)== 0: + return True + for i in device_list: + if device.startswith(i): + return True + return False + +def edit_alarm_id(alarm_id): + new_alarm_id = alarm_id.replace("/", " / ") + return new_alarm_id + +def create_shelve_key(source_id, alarm_id): + """ + Creates a formatted key as Ignition ui + wont allow "/" and spaces to be stored as + key values. Formatting allows easy conversion + back to the origional sourceId and message string. + + Args: + source_id: The sourceId of the alarm. + message: The alarm message. + + Returns: + The formatted key.. + + Raises: + None. + """ + source_to_check = source_id.replace("/", "---") + key_to_check = source_to_check + "----" + str(alarm_id) + return key_to_check + +def unformat_shelve_key(shelved_key): + shelved_items = shelved_key.split("----") + source_to_check = shelved_items[0].replace("---", "/") + alarm_id = int(shelved_items[1]) + return source_to_check, alarm_id + + +def check_alarm_in_shelved_alarms(source_id, message, alarms_to_shelve): + key_to_check = create_shelve_key(source_id, message) + if key_to_check in alarms_to_shelve: + return key_to_check + return False + +def get_alarm_table(self, active_alarms, severity_filters, no_filter, + device_list, alarm_states, alt_colour, table_type): + alarms_data = [] + alarms_critical = [] + alarms_high = [] + alarms_medium = [] + alarms_low = [] + alarms_diagnostic = [] + alarms_disconnected = [] + alarm_temp_dict = {} + shelved_alarms_to_keep = {} + unshelved_alarms_to_keep = {} + shelve_alarms_dict = self.custom.alarms_to_shelve + unshelve_alarms_dict = self.custom.alarms_to_unshelve + if alt_colour: + style_props_critical = {"classes":"Alarms-Styles/Alt-Colours/Critical"} + style_props_high = {"classes":"Alarms-Styles/Alt-Colours/High"} + style_props_medium = {"classes":"Alarms-Styles/Alt-Colours/Medium"} + style_props_low = {"classes":"Alarms-Styles/Alt-Colours/Low"} + style_props_diagnostic = {"classes":"Alarms-Styles/Alt-Colours/Diagnostic"} + style_props_disconnected = {"classes":"Alarms-Styles/NoAlarm-Black"} + + else: + style_props_critical = {"classes":"Alarms-Styles/Critical"} + style_props_high = {"classes":"Alarms-Styles/High"} + style_props_medium = {"classes":"Alarms-Styles/Medium"} + style_props_low = {"classes":"Alarms-Styles/Low"} + style_props_diagnostic = {"classes":"Alarms-Styles/Diagnostic"} + style_props_disconnected = {"classes":"Alarms-Styles/NoAlarm-Black"} + + for i in active_alarms: + source_id = active_alarms[i].get("sourceId","Unknown") + alarm_id = active_alarms[i].get("id","Unknown") + severity = active_alarms[i].get("priority", 0) + family_type= active_alarms[i].get("type", 0) + site_id = active_alarms[i].get("siteId", "Unknown") + state = active_alarms[i].get("state", "Unknown") + state = alarms.alarm_state.get_alarm_state(state) + duration = active_alarms[i].get("timestamp", 0) + time_stamp = get_timestamp(duration) + active_duration = convert(duration) + message = active_alarms[i].get("message", "Unknown") + expiration_epoch = active_alarms[i].get("shelveExpiryEpoch") + duration_in_minutes = active_alarms[i].get("durationMinutes") + family_type_Dict={'1':'Jam','2':'Safety /Emergency','3':'Power circuit','4':'Communication', + '5':'Drive/Motor','6':'Pneumatic','7':'Mechanical','9':'Operational','10':'Scanner', + '11':'Controller','12':'Unexpected Container','20':'Miscellaneous','0':'Undefined'} + type_description= family_type_Dict.get(str(family_type)) + + if expiration_epoch != None: + expiration = system.date.fromMillis(expiration_epoch * 1000) + else: + expiration = "0" + + device_in_list = check_device_in_device_list(source_id, device_list) + if (int(severity) in severity_filters or no_filter == True) and ( + device_in_list == True and state in alarm_states): + if str(active_alarms[i].get("priority")) == "5": + style_class = style_props_critical + severity = "5. Critical" + key = "Critical" + alarm_list = alarms_critical + + elif str(active_alarms[i].get("priority")) == "4": + style_class = style_props_high + severity = "4. High" + key = "High" + alarm_list = alarms_high + + elif str(active_alarms[i].get("priority")) == "3": + style_class = style_props_medium + severity = "3. Medium" + key = "Medium" + alarm_list = alarms_medium + + elif str(active_alarms[i].get("priority")) == "2": + style_class = style_props_low + severity = "2. Low" + key = "Low" + alarm_list = alarms_low + + elif str(active_alarms[i].get("priority")) == "1": + style_class = style_props_diagnostic + severity = "1. Diagnostic" + key = "Diagnostic" + alarm_list = alarms_diagnostic + + elif str(active_alarms[i].get("priority")) == "6": + style_class = style_props_disconnected + severity = "Disconnected" + key = "Disconnected" + alarm_list = alarms_disconnected + + else: + style_class = style_props_diagnostic + severity = "Unknown" + key = "Diagnostic" + alarm_list = alarms_diagnostic + + if table_type == "Docked-East": + source_id = edit_alarm_id(source_id) + + shelve_alarm_id = check_alarm_in_shelved_alarms(source_id, alarm_id, shelve_alarms_dict) + if shelve_alarm_id: + shelved_alarms_to_keep[shelve_alarm_id] = "" + shelve_alarm = True + else: + shelve_alarm = False + + unshelve_alarm_id = check_alarm_in_shelved_alarms(source_id, alarm_id, unshelve_alarms_dict) + if unshelve_alarm_id: + unshelved_alarms_to_keep[unshelve_alarm_id] = "" + unshelve_alarm = True + else: + unshelve_alarm = False + + row = row_builder.build_row( SourceId = source_id, Priority = severity, Type = type_description, + Timestamp = time_stamp, State = state, + Message = message, Expiration = expiration, + Duration = active_duration, Alarm_id = alarm_id, Shelve = shelve_alarm, + Unshelve = unshelve_alarm, StyleClass = style_class) + alarm_list.append(row) + + + for k,v in shelve_alarms_dict.items(): + if k not in shelved_alarms_to_keep: + self.custom.alarms_to_shelve.pop(k) + + for k,v in unshelve_alarms_dict.items(): + if k not in unshelved_alarms_to_keep: + self.custom.alarms_to_unshelve.pop(k) + + return alarms_critical + alarms_high + alarms_medium + alarms_low + alarms_diagnostic + alarms_disconnected diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/resource.json new file mode 100644 index 0000000..30c46d8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "91750148e5a10b7911bb439aec07db302458b9dd77ffa760fdec13714eda6a42", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/code.py new file mode 100644 index 0000000..3f2a8d7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/code.py @@ -0,0 +1,31 @@ +def get_alarms_to_shelve(self): + """This function is used to perform the shelving function on + single or multiple alarms. It receives an alarm data dictionary + from a row in the alarm table and generates a shelving dict to trigger + a tag change script on the gateway. + + Args: + self: Reference to the component that is calling this function + + Returns: + Executes the shelving function. Does not return any results. + + Raises: + KeyError: Raises an exception. + """ + + selected_rows = self.custom.alarms_to_shelve + shelve_time = self.props.value + alarms_to_shelve = [] + messages_to_shelve = [] + for i in selected_rows: +# alarm_id = i.get("AlarmId") + alarm_id = i.get("value",{}).get("SourceId",{}).get("value") + alarm_id = alarm_id.replace(" ", "") + message = i.get("value",{}).get("Alarm_id",{}).get("value") + alarms_to_shelve.append(alarm_id) + messages_to_shelve.append(message) + duration = shelve_time + self.props.value = "" + return alarms_to_shelve ,messages_to_shelve, duration + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/resource.json new file mode 100644 index 0000000..bb0ba9b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "464369967c17d8499370630a0a2f3fc31e06be72964cff80c7c754ec647824a6", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/code.py new file mode 100644 index 0000000..520666c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/code.py @@ -0,0 +1,168 @@ +import os, json, sys, re +from java.util.concurrent.locks import ReentrantLock + +# Global cache + metadata +global_project_page_ids = {} +_gpp_last_mtime = 0.0 +_gpp_lock = ReentrantLock() + +def _detailed_views_basepath(): + # Gateway-safe absolute path to Perspective views + # (Assumes gateway scope; adjust if running in Designer-only scripts) + return os.getcwd().replace('\\','/') + '/data/projects/' + system.util.getProjectName() + '/com.inductiveautomation.perspective/views/Detailed-Views' + +def _folder_mtime(path): + """Return the newest mtime under path (views + their view.json files).""" + newest = 0.0 + try: + for name in os.listdir(path): + p = os.path.join(path, name) + if os.path.isdir(p): + vjson = os.path.join(p, 'view.json') + if os.path.exists(vjson): + newest = max(newest, os.path.getmtime(vjson)) + newest = max(newest, os.path.getmtime(p)) + newest = max(newest, os.path.getmtime(path)) + except Exception: + pass + return newest + +def get_project_config(force=False): + """ + Build/refresh the cache that maps source_id -> page_id. + Rebuilds when 'Detailed-Views' contents change or when force=True. + """ + global global_project_page_ids, _gpp_last_mtime + basePath = _detailed_views_basepath() + + try: + current_mtime = _folder_mtime(basePath) + except Exception: + whid = system.tag.readBlocking(["Configuration/FC"])[0].value + logger = system.util.getLogger("%s-get_project_config" % whid) + exc_type, exc_obj, tb = sys.exc_info() + logger.error("Cannot read Detailed-Views: line %s, %s, %s" % (tb.tb_lineno, exc_type, exc_obj)) + return + + # Only one thread at a time + _gpp_lock.lock() + try: + needs_rebuild = (force or not global_project_page_ids or current_mtime != _gpp_last_mtime) + if not needs_rebuild: + return + + mapping = {} + for entry in os.listdir(basePath): + view_dir = os.path.join(basePath, entry) + vjson = os.path.join(view_dir, "view.json") + if not os.path.isdir(view_dir) or not os.path.exists(vjson): + continue + with open(vjson, 'r') as f: + obj = json.load(f) + + # Walk root children and collect tagProps[0] like before + for child in obj.get('root', {}).get('children', []): + tag_props = child.get("props", {}).get("params", {}).get("tagProps") + if tag_props: + source_id = tag_props[0] + mapping[source_id] = entry # page_id + + global_project_page_ids.clear() + global_project_page_ids.update(mapping) + _gpp_last_mtime = current_mtime + + finally: + _gpp_lock.unlock() + + +def open_pop_up(message): + error_message = message + system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", + params ={"Error_message":error_message}, + showCloseIcon = False, modal = True, + viewportBound = True, + draggable = False, + overlayDismiss = True + ) + + +def navigate_to_url(self, source_id, page_id): + url_to_navigate = "/DetailedView/%s/%s" % (page_id, page_id) + navigation.amzl_navigation.set_session_variables(self, source_id, False) + system.perspective.navigate(page = url_to_navigate) + +def reset_highlights(self): + """ + Clears highlights, closes docks and popups, and resets session variables. + """ + # 1. Reset session variables + self.session.custom.searchId = "" + self.session.custom.deviceSearchId = "" + + # 2. Close popup and docks + system.perspective.closePopup(id="TagSearch") + for dock_id in ["Docked-East-VFD", "Docked-East-MCM", "Docked-East-SNP"]: + system.perspective.closeDock(dock_id) + + # 3. Trigger CLEAR state via navigate to same view + current_page = self.page.props.primaryView + system.perspective.navigate( + view=current_page, + params={"highlightTagPath": "CLEAR"} + ) + +def source_id_lookup(self, source_id): + if not source_id: + return + + # Ensure cache is fresh right before using it + get_project_config() + + page_id = global_project_page_ids.get(source_id) + found = False + final_source_id = source_id + + if not page_id: + items = source_id.split("/") + while len(items) > 1: + items.pop() + candidate_id = "/".join(items) + page_id = global_project_page_ids.get(candidate_id) + if page_id: + found = True + final_source_id = candidate_id + break + else: + found = True + + if not found or not page_id: + open_pop_up("No page id found") + return + + parts = final_source_id.split("/") + device = parts[-1] + + if "MCM" in device: + pathToDevice = "/".join(parts[:3]) + else: + idx = final_source_id.find(device) + pathToDevice = final_source_id[:idx + len(device)] if idx != -1 else final_source_id + + highlight_path = pathToDevice + "||High" + + page_path = page_id if page_id.startswith("Detailed-Views/") else "Detailed-Views/" + page_id + + system.perspective.navigate( + view=page_path, + params={"highlightTagPath": highlight_path} + ) + +def get_child_scada_projects(): + """ + Returns alphabetically sorted child SCADA projects that match '{WHID}_SCADA' + """ + # Likely intended: (AAA9|KAAA)_SCADA + pattern = r'(?:[A-Z]{3}[0-9]|K[A-Z]{3})_SCADA' + all_projects = system.project.getProjectNames() + return sorted([x for x in all_projects if re.fullmatch(pattern, x)]) + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/resource.json new file mode 100644 index 0000000..7606ed8 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-09-10T13:00:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "5ecff16f15611edbbb228b68e2a8a7127d5a4d60f51b2f28081d8f4778ff861c" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/code.py new file mode 100644 index 0000000..7b9f3df --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/code.py @@ -0,0 +1,284 @@ +class helper: + @staticmethod + def list_of_dict_to_dataset(dict_data,dict_column): #dict_data and dict_column are lists of dictionaries + import pprint + #get keys in the first dictionary in the list + #This is used to ensure only real fields are used in the column + if len(dict_data) != 0 and len(dict_column) != 0: + if isinstance(dict_data[0], dict) and isinstance(dict_column[0], dict): + pass + else: + raise TypeError('Dictionary','The items in lists are not Dictionaries.') + else: + raise TypeError('List','List provided is empty') + test = dict_data[0] + pprint.pprint(test) + d_keys = dict_data[0].keys() + + #create the column headers from provided dict_column + #but only if the column name is used as a dict in the data. + column_header = [] + pprint.pprint(dict_column) + for row in dict_column: + if row['field'] in d_keys: + column_header.append(row['field']) + pprint.pprint(column_header) + # create rows used as final list of lists for conversion to dataset + rows = [] + for di in dict_data: + #create individual row + row = [] + for column in column_header: + if di.has_key(column): + row.append(di[column]) + else: + row.append('') + #append each row to rows so all data is captured in a list of lists. + rows.append(row) + + #screate dataset from header and rows of data + dataset = system.dataset.toDataSet(column_header,rows) + return({'basic_dataset':dataset}) + + + + @staticmethod + def sanitize_tree(element): + """ + Arguments: + element: array/list or dict to be sanitized (remove Java "object wrappers") + Returns: + element: sanitized input array/list/dict + Usage: + from helper.helper import sanitize_tree + sanitizedTableData = sanitize_tree(myTable.props.data) + + ## This function loops recursively over a component property and converts all + ## siblings and children to base elements + """ + if hasattr(element, '__iter__'): + if hasattr(element, 'keys'): + return dict((helper.string_decode(k), helper.sanitize_tree(helper.string_decode(element[k]))) for k in element.keys()) + else: + return list(helper.sanitize_tree(helper.string_decode(x)) for x in element) + return element + + + + @staticmethod + def dataset_to_dict(dataset): #provide a basicdataset as input + #verify basic dataset was passed in + string_type = str(type(dataset)) + if string_type != "": + raise TypeError('Dataset','expected BaiscDataset type received %s'%(string_type)) + else: + raw_dataset = system.dataset.toPyDataSet(dataset) + #convert from PyDataSet to list of lists and header names. + headers = [((str(col).replace(' ','')).replace('_','')) for col in raw_dataset.getColumnNames()] + raw_dataset = [[col for col in row] for row in raw_dataset] + + #create needed empty lists to put dictionaries in + col_data = [] + data_data = [] + #create column names for column field of a table + for col in headers: + col_data.append({'field':col, + 'visible': True, + 'editable':False, + 'render':'auto', + 'justify':'auto', + 'align':'center', + 'resizable':True, + 'sortable':True, + 'sort':'none', + 'boolean':'checkbox', + 'number':'value', + 'numberFormat': '0,0.##', + 'dateFormat':'MM/DD/YYYY' + }) + #Create Data dictionaries used for data field of a table + data_counter = 0 + for row in raw_dataset: + data = {} + for col_num in range(len(row)): + data[headers[col_num]] = row[col_num] + data_data.append(data) + data_counter = data_counter+1 + #pass out list of dictionary, list of dictionary, string + return({'data':data_data,'column':col_data}) + + @staticmethod + def xyChartTransform(ds=None, columns=None): + ## This function is for use with the XY chart in Perspective + ## This component requires an array of dictionaries for the chart data structure, rather than an Ignition dataset + ## Each dict item should have the format of: {'Column_X': valueX, 'Column_Y': valueY} + ## ds = Ignition dataset, such as that returned by a SQL query binding + ## columns = list of column names to be included in the array of dicts returned by function. + ## NOTE: the first column name listed will be the X axis + ## If no column list passed in, the function will grab all names from the dataset + + ## NOTE: This function will return every column/value in the dataset as a dict key + rows = [] + if ds is None: + return rows ## return empty array if no dataset passed in + try: + data = system.dataset.toPyDataSet(ds) ## convert to python dataset + if columns is None: + columns = system.dataset.getColumnHeaders(ds) ## extract column names from dataset + for row in data: ## Loop over python dataset + d = {} ## initialize empty dictionary for each row + for c in columns: ## loop over column list + d[c] = row[c] ## add key for each column as key and assign value + rows.append(d) ## append new row + return rows + except: + return rows + + @staticmethod + def string_decode(v): + """ + Arguments: + v: value to be decoded (ignore if not unicode string) + Returns: + v: decoded value + Usage: + from helper.helper import string_decode + my_unicode_string = (u'hello world') + decoded_string = string_decode(my_unicode_string) + + ## This function is a helper for the sanitize_tree function, normally + """ + # vscode pylint v2.7.* will complain about this but it works, also works in Ignition v.8.1.* + if isinstance(v, unicode): + # replace any nasty em- or en-dashes with a more sane '-' short dash + # this should avoid most of the nested try:except: blocks below + if u'\u2013' in v: v = v.replace(u'\u2013', '-') + try: v = str(v) + except: + import traceback + from loggerConfig import getLogger + logger = getLogger('sanitize_tree_string_decode') + logger.warn(traceback.format_exc()) + try: + v = v.encode('utf-8') + v = str(v) + except: + logger.warn(traceback.format_exc()) + try: v.encode('ascii', 'ignore') + except: + logger.warn(traceback.format_exc()) + try: v = repr(v) + except: + logger.warn(traceback.format_exc()) + return v + return v + + @staticmethod + def centerJustifyTableColumns(columns=[]): + """ + ## This method takes a table column config object (array of dicts) and returns it with all columns and their headers set to center justified + Arguments: + columns: [array of dict] table column configuration + Returns: + columns: [array of dict] table column config, with all columns/headers center justified + Usage: + from helper.helper import centerJustifyTableColumns + myTable.props.columns = centerJustifyTableColumns(myTable.props.columns) + """ + try: + for column in columns: + try: + column['justify'] = 'center' + column['header']['justify'] = 'center' + except: continue + except: pass + return columns + + @staticmethod + def get_dropdown_options_from_dataset(ds=None, value_column=None, label_column=None): + """ + This method takes an ignition dataset object, and a name or index for "value" and "label" columns + and returns an array of dict objects for each row to use in the binding of perspective dropdown "options" prop. + Arguments: + ds: Ignition dataset object, ie from named SQL query + value_column: [string or integer] if string, the name of the column to represent the value when option is selected. + if integer, the column index for the value + label_column: [string or integer] if string, the name of the column to represent the label (display) for option selection. + if integer, the column index for the label + Returns: [{ + value: value to be assigned to dropdown "value" property when options selection + label: value to be displayed in the dropdown for each option + }] + Usage: + # in a script transform on the dropdown.props.options binding + from helper.helper import get_dropdown_options_from_dataset + options = get_dropdown_options_from_dataset( + ds=value, # from property/query binding above this transform + value_column='my_value_column_name', + label_column='my_label_column_name + ) + return options + """ + # Check required arguments for null values + if ds is None: + msg = 'No dataset passed in' + return {'error': msg} + if value_column is None: + msg = 'No value_column name or index passed in' + return {'error': msg} + if label_column is None: + msg = 'No label_column name or index passed in' + return {'error': msg} + # convert the ignition dataset to python dataset to iterate over + try: data = system.dataset.toPyDataSet(ds) + except: + import traceback + msg = 'Error converting dataset to python data: %s' % traceback.format_exc() + return {'error': msg} + # grab the column headers from input dataset + headers = system.dataset.getColumnHeaders(ds) + # verify both the value and label columns are in the list of column headers, if passed in as strings + # if passed in as integer indexes, make sure they are valid + if isinstance(value_column, str): + if value_column not in headers: + msg = 'value_column (%s) not in dataset column headers!' % value_column + return {'error': msg} + elif isinstance(value_column, int): + if value_column not in range(len(headers)): + msg = 'value_column index (%d) not valid!' % value_column + return {'error': msg} + else: # if not string or integer, invalid type + msg = 'invalid type for value_column (%s). Must be integer or string' % type(value_column) + return {'error': msg} + if isinstance(label_column, str): + if label_column not in headers: + msg = 'label_column (%s) not in dataset column headers!' % label_column + return {'error': msg} + elif isinstance(label_column, int): + if label_column not in range(len(headers)): + msg = 'label_column index (%d) not valid!' % label_column + return {'error': msg} + else: # if not string or integer, invalid type + msg = 'invalid type for label_column (%s). Must be integer or string' % type(label_column) + return {'error': msg} + # if passed all verification checks, build array of objects representing label/value pairs for each dataset row + options = [{'value': row[value_column], 'label': row[label_column]} for row in data] + return options + + @staticmethod + def keys_exists(element, *keys): + ''' + Check if *keys (nested) exists in `element` (dict). + ''' + if not isinstance(element, dict): + raise AttributeError('keys_exists() expects dict as first argument.') + if len(keys) == 0: + raise AttributeError('keys_exists() expects at least two arguments, one given.') + + _element = element + for key in keys: + try: + _element = _element[key] + except KeyError: + return False + return True \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/resource.json new file mode 100644 index 0000000..a36b095 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "5b36b66c6d37d7cb3a30a7e91771d287d057d22b40a06de09d62a19973997b5f", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/code.py new file mode 100644 index 0000000..3ee54c4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/code.py @@ -0,0 +1,20 @@ +def csv_import(): + """ + Opens a file and returns the data as a list . + + Args: + + Returns: + the .csv as a nested list. + + Raises: + KeyError: Raises an exception. + """ + newFile = system.file.openFile('gif') + +# with open(newFile,"r") as f: +# csv_reader = csv.reader(f) +# device_list = [] +# for line in csv_reader: +# device_list.append(line) +# return device_list diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/resource.json new file mode 100644 index 0000000..5dd280a --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "8ca05593568e095c48ad9b0e47ae7bdc5eafa2da8a1e8a5dd5567262bc31ce29" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/code.py new file mode 100644 index 0000000..79e3b5d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/code.py @@ -0,0 +1,34 @@ +import logging + +LOGGING_MAP_IDE = { + 'critical': {'level': logging.CRITICAL, 'value': 50}, + 'error': {'level': logging.ERROR, 'value': 40}, + 'warning': {'level': logging.WARNING, 'value': 30}, + 'info': {'level': logging.INFO, 'value': 20}, + 'debug': {'level': logging.DEBUG, 'value': 10}, + 'trace': {'level': 5, 'value': 5}, + 'notset': {'level': logging.NOTSET, 'value': 0} +} + +LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error'] ## these are the valid logging levels for use with Ignition system.util.setLoggingLevel() function + +def getLoggerIDE(name='', level='info'): + ## insure basic logging is set-up + logging.basicConfig() + ## Grab a logger object for the given name + logger = logging.getLogger(name) + if level and level in LOGGING_MAP_IDE: + level = LOGGING_MAP_IDE[level]['level'] + logger.setLevel(level) + ## Check if any handler exists for this logger, if not, create a basic handler config. + ## TODO: Add a functionality to customize handlers, particularly for writing to Ignition gateway console or system.perspective.print() etc + # if not len(logger.handlers): logging.basicConfig() + return(logger) + +def getLogger(name='', level=None): + ## Grab a logger object for the given name from the Ignition system.util function + logger = None + if name not in ['', None]: logger = system.util.getLogger(name) + ## if logger created, level arg passed in and valid, set the logging level accordingly + if logger and level and level in LOG_LEVELS: system.util.setLoggingLevel(name, level) + return(logger) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/resource.json new file mode 100644 index 0000000..1661231 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "cd45371a0568010f94cbb9c1abfb3039d57cf8a5fbee320135faaa16d1e257e4", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/code.py new file mode 100644 index 0000000..6427538 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/code.py @@ -0,0 +1,141 @@ +def send_message(**kwargs): + fc = system.tag.readBlocking("Configuration/FC")[0].value + payload = kwargs + message_type = kwargs.get("message_type") + scope = kwargs.get("scope") + source = kwargs.get("source") + try: + system.perspective.sendMessage(message_type, payload = payload, scope = scope) + except: + system.perspective.print(source, destination="client") + +def update_device_filters(devices): + payload= {} + payload["data"] = devices + system.perspective.sendMessage("update-device-filters", payload = payload, scope = "page") + +def reset_historical_filters(action): + payload = {} + payload["data"] = action + system.perspective.sendMessage("reset-historical-filters", payload = payload, scope = "page") + +def update_source_id_filters(source_ids): + payload= {} + payload["data"] = source_ids + system.perspective.sendMessage("update-source_id-filters", payload = payload, scope = "page") + +def send_http_response_code(response): + payload= {} + payload["response"] = response + system.perspective.sendMessage("http-response-code", payload = payload, scope = "page") + +def update_historical(historical_data): + payload= {} + payload["data"] = historical_data + system.perspective.sendMessage("update-historical-data", payload = payload, scope = "page") + +def update_historical_first_request(historical_data): + payload = {} + payload["data"] = historical_data + payload["initial_data"] = historical_data + system.perspective.sendMessage("update-first-request", payload = payload, scope = "page") + +def load_initial_data(request): + #Pass a boolean to load the initial dataset. + payload = {} + payload["data"] = request + system.perspective.sendMessage("load_initial_data", payload = payload, scope = "page") + +def update_token_array(token_array): + payload = {} + payload["data"] = token_array + system.perspective.sendMessage("update-token-array", payload = payload, scope = "page") + +def show_historical_filters(action): + payload = {} + payload["data"] = action + system.perspective.sendMessage("show-historical-filters", + payload = payload, scope = "page") + +def update_initial_token(number): + payload = {} + payload["data"] = number + system.perspective.sendMessage("update-initial-tokens", payload = payload, scope = "page") + +def set_source_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-source-filters", payload = payload, + scope = "page") + + +def set_type_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-type-filters", payload = payload, + scope = "page") + +def set_priority_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-priority-filters", payload = payload, + scope = "page") + +def set_device_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-device-filters", payload = payload, + scope = "page") + +def set_message_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-message-filters", payload = payload, + scope = "page") + +def set_time_from_filters(self): + "This filter sets the time from for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-from-filters", payload = payload, + scope = "page") + +def set_time_to_filters(self): + "This filter sets the time to for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-to-filters", payload = payload, + scope = "page") + +def set_duration_filters(self): + filters = self.props.value + ms = filters * 1000 + payload = {} + payload["data"] = ms + system.perspective.sendMessage("set-duration-filters", payload = payload, + scope = "page") + +def update_page_number(page): + payload = {} + payload["data"] = page + system.perspective.sendMessage("update-page-number", payload = payload, + scope = "page") + +def update_client_id(client_id): + payload = {} + payload["data"] = client_id + system.perspective.sendMessage("update-client-id", payload = payload, + scope = "page") + +#Generic message handler scoped at view level +def view_message_handler(message, message_type): + payload = {} + payload["data"] = message + system.perspective.sendMessage(message_type, payload, scope = "view") diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/resource.json new file mode 100644 index 0000000..d83f1c4 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-08-07T13:17:11Z" + }, + "lastModificationSignature": "de7b1ecc12a9ed0057be305a7e1bec7b37d3c0afc2cb259217db6bb5c9be9def", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/code.py new file mode 100644 index 0000000..c3bf108 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/code.py @@ -0,0 +1,20 @@ +def navigate_to_additional_view(self): + """ + This function is used to navigate to a page from a navigation button. + This function can be used on any button that has a property called "self.custom.page_id" + which is the target page for the button. + Args: + self: Refrence to the object that is invoking this function. + + Returns: + This is a description of what is returned. + + Raises: + KeyError: Raises an exception. + """ + + page_id = self.custom.page_id + plc = page_id.split("-")[0] + url_to_navigate = "/DetailedView/%s/%s" % (page_id, plc) + system.perspective.navigate(page = url_to_navigate) + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/resource.json new file mode 100644 index 0000000..7bf1163 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "3173b399d2c6ff8dfc4f99247e81276cd5de981e1d90c046924b945603e5e032" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/code.py new file mode 100644 index 0000000..939193b --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/code.py @@ -0,0 +1,79 @@ +def set_session_variables(self, search_id, device_search_id): + """ + chnaged from:(self, search_id, device_search_id, plc_tag_path, display_cc, detailed_view) + This function is used to set the custom session variables in the perspective session. + + Args: + self: This is a reference to the object that is calling this function. + search_id: Type string, this should be a UDT name. + device_search_id: Type string, display path of the alarm. + Returns: + None. + + Raises: + None. + """ + self.session.custom.searchId = search_id + self.session.custom.deviceSearchId = device_search_id + +def navigate_to_alarm(self, event): + """ + This function is used to navigate to a detailed view when double + clicking a row in the active alarm table. It takes the Ignition alarm id + to return the alarm information from the "System/ActiveAlarms" tag. + + Args: + self: This is a reference to the object that is clicked on the screen. + event: This is a reference to the event that is clicked on the screen. + Returns: + None. + + Raises: + None. + """ + alarm_id = event.value.get("AlarmId") + tags_to_read = system.tag.readBlocking(["Configuration/DetailedViews","System/ActiveAlarms"]) + pages_decoded = system.util.jsonDecode(tags_to_read[0].value) + active_alarms = system.util.jsonDecode(tags_to_read[1].value) + UDT = active_alarms.get(alarm_id,{}).get("UDT_tag") + bit_position = active_alarms.get(alarm_id,{}).get("bitPosition") + name = active_alarms.get(alarm_id,{}).get("Name") + page_id = active_alarms.get(alarm_id,{}).get("PageId","None") + page = UDT.split("_")[0] + + if page_id != "None" and len(page_id)>0: + page_id = page_id.split("-")[0] + udt_to_read = "%s/Parameters.AREA" % (page_id) + else: + udt_to_read = "%s/Parameters.AREA" % (page) + system.perspective.print(udt_to_read) + read_area = system.tag.readBlocking([udt_to_read]) + area = read_area[0].value + + page_name = "/"+page + display_path = active_alarms.get(alarm_id,{}).get("DisplayPath") + check_keys = pages_decoded.get(page,0) + + if page_id != "None" and page_id != "": + page = page_id.split("-")[0] + url_to_navigate = "/DetailedView/%s/%s" % (page_id, page) + set_session_variables(self, UDT, display_path) + system.perspective.navigate(page = url_to_navigate) + system.perspective.sendMessage("plc-to-display", payload = {"device":page_id, "show_controls":True, "area":area}, scope = "page") + + elif check_keys != 0: + set_session_variables(self, UDT, display_path) + url_to_navigate = "/DetailedView/%s/%s" % (page, page) + system.perspective.navigate(page = url_to_navigate ) + system.perspective.sendMessage("plc-to-display", payload = {"device":page, "show_controls":True, "area":area}, scope = "page") + + else: + for i in pages_decoded: + page_list = pages_decoded[i] + if page in page_list: + set_session_variables(self, UDT, display_path) + url_to_navigate = "/DetailedView/%s/%s" % (i,i) + system.perspective.navigate(page = url_to_navigate) + system.perspective.sendMessage("plc-to-display", payload = {"device":i, "show_controls":True, "area":area}, scope = "page") + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/resource.json new file mode 100644 index 0000000..a52a984 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "913b95a579010ac7d53e0a1122a15fe014d5d2db46831da40a697880acbdc66a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/code.py new file mode 100644 index 0000000..636cdc5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/code.py @@ -0,0 +1,65 @@ +def set_session_variables(self, search_id, covert): + """ + chnaged from:(self, search_id, device_search_id, plc_tag_path, display_cc, detailed_view) + This function is used to set the custom session variables in the perspective session. + + Args: + self: This is a reference to the object that is calling this function. + search_id: Type string, this should be a UDT name. + device_search_id: Type string, display path of the alarm. + Returns: + None. + + Raises: + None. + """ + self.session.custom.searchId = search_id + self.session.custom.covert = covert + + +def navigate_to_alarm(self, mhe_id): + """ + This function is used to navigate to the location of an alarm within SCADA + + Args: + self: This is a reference to the object that is clicked on the screen. + event: This is a reference to the event that is clicked on the screen. + Returns: + None. + + Raises: + Logs and error to the gateway if the Config/cfg tag is not found + or the LinkToPage field is empty. + """ + + config = "%s/Config/cfg" % (mhe_id) + tags_to_read = system.tag.readBlocking(["Configuration/FC", "Configuration/DetailedViews"]) + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (tags_to_read[0].value) + tags_config = system.tag.readBlocking([tag_provider + config]) + tag_config_value = system.util.jsonDecode(tags_config[0].value) + if tag_config_value: + link_to_page = tag_config_value.get("LinkToPage") + if link_to_page == None or len(link_to_page) == 0: + error_message = "No page id found in Cfg tag" + system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", + params ={"Error_message":error_message}, + showCloseIcon = False, modal = True, + viewportBound = True, + draggable = False, + overlayDismiss = True + ) + else: + url_to_navigate = "/DetailedView/%s/%s" % (link_to_page, link_to_page) + #Update the session variables to flash the pointers. + set_session_variables(self, mhe_id, False) + system.perspective.navigate(page = url_to_navigate) + else: + error_message = "No cfg tag found" + system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", + params ={"Error_message":error_message}, + showCloseIcon = False, modal = True, + viewportBound = True, + draggable = False, + overlayDismiss = True + ) + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/resource.json new file mode 100644 index 0000000..c3d4933 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b171bd399f13099b6980f184a17c32ed90384902b31362e0a0e87982b2350d89", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/code.py new file mode 100644 index 0000000..65db1c1 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/code.py @@ -0,0 +1,15 @@ +def detailed_view(page_id): + """ + This function is used to naviagte to a page from a navigation button + This function takes one parameter "page_id. This is the id of the page + the user wishes to navigate to. + + Args: + page_id : Target page the function will use to navigate to. + Returns: + None. + + Raises: + None. + """ + system.perspective.navigate(page_id) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/resource.json new file mode 100644 index 0000000..82239e5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "4b18fa01e1916c25ecb3ede67a0f6779e5a0d9da2fc8191afe08925465e04488" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/code.py new file mode 100644 index 0000000..e5bd1aa --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/code.py @@ -0,0 +1,50 @@ +def detailed_view(self, tag_name, device_id, area): + """ + This function is used to naviagte to a detailed view + For example an on click event of a component. + The input paramter array to the component contains a reference to the PLC. + Detail view display all devices and equipement connected to a particular PLC. + The PLC ID is looked up in the "Configuration/DetailedViews" dictionary. + if found it navigates to the detailed view of the page_name {/}. + + Args: + self: This is a reference to the object that is clicked on the screen. + tag_name: Hold information on the particular event that call this function. + area : The area within the FC + Returns: + None. + + Raises: + None. + """ + device = tag_name.split("_") + device = device[0] + # Example: page_name = /F01 + pages = system.tag.readBlocking(["Configuration/DetailedViews"]) + pages_value = pages[0].value + pages_decoded = system.util.jsonDecode(pages_value) + for view , devices in pages_decoded.items(): + if device in devices: + self.session.custom.searchId = tag_name + self.session.custom.deviceSearchId = device_id + system.perspective.sendMessage("plc-to-display", payload = {"device":view,"show_controls":True,"area":area}, scope = "page") + url_to_navigate = "/DetailedView/%s/%s" % (view, view) + system.perspective.navigate(page = url_to_navigate) + return + +def navigate_to_deatiled_view(source): + page_id = config.project_config.get_project_config.global_project_page_ids.get(source) + if page_id: + url_to_navigate = "/DetailedView/%s/%s" % (page_id, page_id) + navigation.amzl_navigation.set_session_variables(self, page_id, False) + system.perspective.navigate(page = url_to_navigate) + elif not page_id: + data = source.split("/") + pass + + + + + + + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/resource.json new file mode 100644 index 0000000..20fbe1c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "40058a18d81e43b3518010123a2cb918ea36e6511cdf311af263ddf4502ed9cd", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/code.py new file mode 100644 index 0000000..078717c --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/code.py @@ -0,0 +1,44 @@ +def generate_tag_config(self,event): + """This function generates the tag config in the search window. + + Args: + self: A reference to the object that is invoking this function. + event: A reference to the event object that is being called by this function.. + + Returns: + This is a description of what is returned. + + Raises: + None. + + """ + + tag = event.value.get("Tags") + fc = system.tag.read("Configuration/FC").value + path ="[%s_SCADA_TAG_PROVIDER]%s/OPC/" % (fc, tag) + results = system.tag.browse( path = path) + tag_list = results.getResults() + data = [i["fullPath"] for i in tag_list] + table_data = [] + for i in data: + config = system.tag.getConfiguration(i) + alarms = [x.get("alarms") for x in config] + try: + for alarm in alarms: + for x in alarm: +# replace = "[%s_SCADA_TAG_PROVIDER]" % (fc) + system.perspective.print(x) + full_path = str(i) + name = x.get("name") + additional_info = x.get("AdditionalInfo") + priority = x.get("priority") + bit_position = x.get("bitPosition") + row = row_builder.build_row(FullPath = full_path, AdditionalInfo = additional_info, + Priority = priority, Name = name, StyleClass = {"classes":"Alarms-Styles/NoAlarms"}) + table_data.append(row) + except: + system.perspective.print("object not iterable") +# self.getSibling("Table_0").props.data = table_data + payload = {} + payload["table_data"] = table_data + system.perspective.sendMessage("build-tag-config", payload = payload, scope = "view") diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/resource.json new file mode 100644 index 0000000..16da389 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "e27e5a78a5bae739b144b8fbf205884704956b6ef1574b5e98b1e77801a44773", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/code.py new file mode 100644 index 0000000..ffedf84 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/code.py @@ -0,0 +1,34 @@ +def show_alarm_from_docked_window(self,event): + #Get the alarm properties from the alarm object. + """ + Displays the currently active alarm from the south docked alarm table in the detailed view. + If the alarm is on a different page to the current page the function will navigate the user + to the correct page and show the alarm. + + Args: + self: Refrence to the object thats invoking this function. + event: Refrence to the event that is invoking this function. + + Returns: + The fucntion doses not return any values. + + Raises: + KeyError: None + """ + + + alarm_id = event.value.get("AlarmId") + tags_to_read = system.tag.readBlocking(["System/ActiveAlarms"]) + active_alarms = system.util.jsonDecode(tags_to_read[0].value) + UDT = active_alarms.get(alarm_id,{}).get("UDT_tag") + plc = UDT.split("_")[0] + name = active_alarms.get(alarm_id,{}).get("Name") + page_id = active_alarms.get(alarm_id,{}).get("PageId","None") + display_path = active_alarms.get(alarm_id,{}).get("DisplayPath") + + #Set the session custom variables to highlight the selected alarm. + self.session.custom.searchId = UDT + self.session.custom.deviceSearchId = display_path + + url_to_navigate = "/DetailedView/%s/%s" % (page_id, plc) + system.perspective.navigate(page = url_to_navigate) diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/resource.json new file mode 100644 index 0000000..acac403 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/resource.json @@ -0,0 +1,16 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "b46f57d52206934fadbd485208bc2d340a89c9354259e3ae47bb222311daa5f8" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/code.py new file mode 100644 index 0000000..c47d627 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/code.py @@ -0,0 +1,122 @@ +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +import json +import system +import boto3 +from pprint import pformat + +REGION ='us-west-2' + + +def openSession(): + CREDS = boto3.Session().get_credentials() + AWS_ACCESS_KEY_ID = CREDS.access_key + AWS_SECRET_ACCESS_KEY = CREDS.secret_key + TOKEN = CREDS.token + CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID, + 'SecretAccessKey':AWS_SECRET_ACCESS_KEY, + 'SessionToken':TOKEN} +# OPENER = aws_urlopen( +# AWS_ACCESS_KEY_ID, +# AWS_SECRET_ACCESS_KEY, +# REGION, +# SERVICE, +# session_token=TOKEN, +# verify=False) +# return OPENER + + return CREDSRETURN + + +def DynamoDeleter(PrimaryKey, publish): + import json + from pprint import pformat + import boto3 + from datetime import datetime + from decimal import Decimal + import time + + LOGGER = system.util.getLogger('notify_to_dynamodb_log') + + # Get STAGE variable + roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify' + STAGE = 'beta' + # Make sure STAGE is valid. no gamma stage configured + if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: + STAGE = 'beta' + if STAGE == 'gamma': + STAGE = 'beta' + + STAGE_CONFIG = { + 'alpha':{ + 'region' : 'us-west-2', + 'roleArn' : roleArn, + 'tableName' : 'NotificationsEntries' + }, + 'beta': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + + }, + 'prod': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + } + } + + + # create sts session to get credentials from EC2 + sts_client = boto3.client('sts') + region_name = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-west-2') + + assume_role_response = sts_client.assume_role( + RoleArn = STAGE_CONFIG.get(STAGE, 'beta').get('roleArn', roleArn), + RoleSessionName = 'AssumeRole' + ) + + temp_credentials = assume_role_response['Credentials'] + + # create session using the temp creds + b3_session = boto3.Session( + aws_access_key_id = temp_credentials['AccessKeyId'], + aws_secret_access_key = temp_credentials['SecretAccessKey'], + aws_session_token = temp_credentials['SessionToken'], + region_name = 'us-west-2', + ) + + # create a dynamodb session + dynamodb = b3_session.resource('dynamodb') + table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries')) +# response = client.scan( +# TableName='string', +# IndexName='string', +# AttributesToGet=[ +# 'string', +# ], +# Limit=123, + + # write data directly to dynamodb table + try: + response = table.delete_item(Key={ + 'PrimaryKey': PrimaryKey, + "publish": publish + }, + ConditionExpression="attribute_exists (PrimaryKey)") +# response = table.scan(ProjectionExpression="PrimaryKey, publish, expire, title") +# TableName='NotificationsEntries', +# IndexName='publish', +## ProjectionExpression =['publish', 'expire', 'title'], +# Limit=123) +# system.perspective.print(response) + system.perspective.print('Delete from NotificationsEntries DynamoDB Table Successful') + except Exception as e: + system.perspective.print('Delete from NotificationsEntries DynamoDB Table NOT Successful') + system.perspective.print(str(e)) + LOGGER.error(str(e)) + + + return response + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/resource.json new file mode 100644 index 0000000..3518334 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "70dd2e4f9b25df4277d413b7bf91f0afd57e8a8a7003ba44ba10815ad45a0268" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/code.py new file mode 100644 index 0000000..d4c5f78 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/code.py @@ -0,0 +1,118 @@ +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +import json +import system +import boto3 +from pprint import pformat + +REGION ='us-west-2' + + +def openSession(): + CREDS = boto3.Session().get_credentials() + AWS_ACCESS_KEY_ID = CREDS.access_key + AWS_SECRET_ACCESS_KEY = CREDS.secret_key + TOKEN = CREDS.token + CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID, + 'SecretAccessKey':AWS_SECRET_ACCESS_KEY, + 'SessionToken':TOKEN} +# OPENER = aws_urlopen( +# AWS_ACCESS_KEY_ID, +# AWS_SECRET_ACCESS_KEY, +# REGION, +# SERVICE, +# session_token=TOKEN, +# verify=False) +# return OPENER + + return CREDSRETURN + + +def DynamoReader(): + import json + from pprint import pformat + import boto3 + from datetime import datetime + from decimal import Decimal + import time + + LOGGER = system.util.getLogger('notify_to_dynamodb_log') + + # Get STAGE variable + roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify' + STAGE = 'beta' + # Make sure STAGE is valid. no gamma stage configured + if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: + STAGE = 'beta' + if STAGE == 'gamma': + STAGE = 'beta' + + STAGE_CONFIG = { + 'alpha':{ + 'region' : 'us-west-2', + 'roleArn' : roleArn, + 'tableName' : 'NotificationsEntries' + }, + 'beta': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + + }, + 'prod': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + } + } + + + # create sts session to get credentials from EC2 + sts_client = boto3.client('sts') + region_name = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-west-2') + + assume_role_response = sts_client.assume_role( + RoleArn = STAGE_CONFIG.get(STAGE, 'beta').get('roleArn', roleArn), + RoleSessionName = 'AssumeRole' + ) + + temp_credentials = assume_role_response['Credentials'] + + # create session using the temp creds + b3_session = boto3.Session( + aws_access_key_id = temp_credentials['AccessKeyId'], + aws_secret_access_key = temp_credentials['SecretAccessKey'], + aws_session_token = temp_credentials['SessionToken'], + region_name = 'us-west-2', + ) + + # create a dynamodb session + dynamodb = b3_session.resource('dynamodb') + table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries')) +# response = client.scan( +# TableName='string', +# IndexName='string', +# AttributesToGet=[ +# 'string', +# ], +# Limit=123, + + # write data directly to dynamodb table + try: + response = table.scan() +# response = table.scan(ProjectionExpression="PrimaryKey, publish, expire, title") +# TableName='NotificationsEntries', +# IndexName='publish', +## ProjectionExpression =['publish', 'expire', 'title'], +# Limit=123) +# system.perspective.print(response) + system.perspective.print('Read from NotificationsEntries DynamoDB Table Successful') + except Exception as e: + system.perspective.print('Read from NotificationsEntries DynamoDB Table NOT Successful') + system.perspective.print(str(e)) + LOGGER.error(str(e)) + + + return response + \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/resource.json new file mode 100644 index 0000000..eecde09 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "2c3c2e2adb552b8881e91bf713f2ea702c393516e9c626d37453055296e28433" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/code.py new file mode 100644 index 0000000..eed4f35 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/code.py @@ -0,0 +1,103 @@ +from urllib2_aws4auth import aws_urlopen, Request +from urllib2 import HTTPError +from urllib import urlencode +import json +import system +import boto3 +from pprint import pformat + +REGION ='us-west-2' + + +def openSession(): + CREDS = boto3.Session().get_credentials() + AWS_ACCESS_KEY_ID = CREDS.access_key + AWS_SECRET_ACCESS_KEY = CREDS.secret_key + TOKEN = CREDS.token + CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID, + 'SecretAccessKey':AWS_SECRET_ACCESS_KEY, + 'SessionToken':TOKEN} +# OPENER = aws_urlopen( +# AWS_ACCESS_KEY_ID, +# AWS_SECRET_ACCESS_KEY, +# REGION, +# SERVICE, +# session_token=TOKEN, +# verify=False) +# return OPENER + + return CREDSRETURN + + +def DynamoWriter(payload): + import json + from pprint import pformat + import boto3 + from datetime import datetime + from decimal import Decimal + import time + + LOGGER = system.util.getLogger('notify_to_dynamodb_log') + roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify' + # Get STAGE variable + + STAGE = 'alpha' + # Make sure STAGE is valid. no gamma stage configured + if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: + STAGE = 'beta' + if STAGE == 'gamma': + STAGE = 'beta' + + STAGE_CONFIG = { + 'alpha':{ + 'region' : 'us-west-2', + 'roleArn' : roleArn, + 'tableName' : 'NotificationsEntries' + }, + 'beta': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + + }, + 'prod': { + 'region':'us-west-2', + 'roleArn': roleArn, + 'tableName' : 'NotificationsEntries' + } + } + + + # create sts session to get credentials from EC2 + sts_client = boto3.client('sts') + region_name = STAGE_CONFIG.get(STAGE, 'beta').get('region', 'us-west-2') + + assume_role_response = sts_client.assume_role( + RoleArn = STAGE_CONFIG.get(STAGE, 'alpha').get('roleArn',roleArn), + RoleSessionName = 'AssumeRole' + ) +# arn:aws:iam::905418448057:role/ignition_to_aws_scada_notify + temp_credentials = assume_role_response['Credentials'] + + # create session using the temp creds + b3_session = boto3.Session( + aws_access_key_id = temp_credentials['AccessKeyId'], + aws_secret_access_key = temp_credentials['SecretAccessKey'], + aws_session_token = temp_credentials['SessionToken'], + region_name = 'us-west-2', + ) + + # create a dynamodb session + dynamodb = b3_session.resource('dynamodb') + table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries')) + + + # write data directly to dynamodb table + try: + response = table.put_item(TableName='NotificationsEntries',Item= payload) +# system.perspective.print(response) + system.perspective.print('Write to NotificationsEntries DynamoDB Table Successful') + except Exception as e: + system.perspective.print('Write to NotificationsEntries DynamoDB Table NOT Successful') + system.perspective.print(str(e)) + LOGGER.error(str(e)) \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/resource.json new file mode 100644 index 0000000..e651b86 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "hintScope": 2, + "lastModificationSignature": "b20d94651147ab8f4e547cb6b7a5ebd43a76e3b5b9b67342e3d8383419fffb3a" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/code.py new file mode 100644 index 0000000..2c04f42 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/code.py @@ -0,0 +1,32 @@ +def build_row(**kwargs): + """ + Args: + Any number of arguments using kwargs key = value format. + Key StyleClass is used for adding formatting to the row. + StyleClass = {classes:value} + Returns: + A python dict with style formatting for perspective tables.. + + Raises: + KeyError: Raises an exception. + """ + row = {} + column ={} + for key,value in kwargs.items(): + if key != "StyleClass": + column[key]={"value":value} + row["value"]=column + style_class = kwargs.get("StyleClass") + row["style"] = style_class + return row + +def build_row_with_view(**kwargs): + row = {} + column ={} + for key,value in kwargs.items(): + if key != "StyleClass": + column[key]= value + row["value"]=column + style_class = kwargs.get("StyleClass") + row["style"] = style_class + return row diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/resource.json new file mode 100644 index 0000000..eb1a5a5 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "093bc44046230eefc3b3d24c705c150357691444311a4b1c8b2fbac4bd0334c0", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/code.py new file mode 100644 index 0000000..a188a79 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/code.py @@ -0,0 +1,44 @@ +def get_state_table(active_states): + faulted = [] + stopped = [] + running = [] + style_class = {} + state_lookup = {1:"Faulted", 2:"Stopped", 3:"Running"} + for i in active_states: + source_id = i + time_stamp = active_states[i].get("timestamp","Unknown") + time_stamp_converted = alarms.alarm_tables.get_timestamp(time_stamp) + state = active_states[i].get("state","Unknown") + if time_stamp !=("Unknown"): + duration = alarms.alarm_tables.convert(int(time_stamp)) + else: + duration = 0 + state_list = [] + if state == 3: + state_list = running + style_class = {"classes":"State-Styles/State5"} + state = state_lookup.get(state, 6) + elif state == 2: + state_list = stopped + style_class = {"classes":"State-Styles/State2"} + state = state_lookup.get(state, 6) + elif state == 1: + state_list = faulted + style_class = {"classes":"State-Styles/State1"} + state = state_lookup.get(state, 6) + else: + pass + + state_row = row_builder.build_row_with_view(SourceId = source_id, + TimeStamp = time_stamp_converted, + Duration = duration, + State = state, + StyleClass = style_class ) + state_list.append(state_row) + + return faulted + stopped + running + + + + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/resource.json new file mode 100644 index 0000000..50183c7 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "60aea0b3ce0333c4e2efbe5947123cc31949de562988c137157a21491e9ad374", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/code.py b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/code.py new file mode 100644 index 0000000..477561f --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/code.py @@ -0,0 +1,38 @@ +def get_devices(fc): + tag_path = "[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews" % (fc) + tags_to_read = system.tag.readBlocking([tag_path]) + devices = system.util.jsonDecode(tags_to_read[0].value) + device_list = [] + for k,v in devices.items(): + for i in v: + device_list.append(i) + return(device_list) + +def reset_disconnect_tags(whid, device_list): + tags_to_write = [] + values_to_write = [] + for i in device_list: + tag_path = "[%s_SCADA_TAG_PROVIDER]%s/DCN" % (whid, i) + tags_to_write.append(tag_path) + values_to_write.append(0) + system.tag.writeAsync(tags_to_write, values_to_write) + +def get_tag_paths(fc): + tags_to_read = system.tag.readBlocking(["Configuration/FC"]) + fc = tags_to_read[0].value + results = system.tag.browse(path ="["+fc+"_SCADA_TAG_PROVIDER]", filter = {"recursive":True, "tagType": "Folder"}) + tag_list = results.getResults() + source_list = [] + items_to_exclude = ["Configuration", "System","_types_"] + for i in tag_list: + full_path = str(i["fullPath"]) + try: + source_id = full_path.split("]")[1] + except IndexError: + continue + if source_id not in items_to_exclude: + item_to_add = {"value": source_id, "label": source_id} + source_list.append(item_to_add) + return(source_list) + + diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/resource.json new file mode 100644 index 0000000..b3d01ad --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "external", + "timestamp": "2025-04-08T09:28:16Z" + }, + "lastModificationSignature": "febbf169853558dda3c5d22bf5ddadd177e7b0d6fde86a377bdf2c1779a57d59", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/project.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/project.json new file mode 100644 index 0000000..1a246e6 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/project.json @@ -0,0 +1,7 @@ +{ + "title": "SCADA_PERSPECTIVE_PARENT_PROJECT", + "description": "", + "parent": "", + "enabled": false, + "inheritable": true +} \ No newline at end of file diff --git a/conversion-report.txt b/conversion-report.txt new file mode 100644 index 0000000..6215b6c --- /dev/null +++ b/conversion-report.txt @@ -0,0 +1,4 @@ +Starting conversion: 20250910:17.00.10 +Conversion finished. Elapsed time: 11 ms +Starting conversion: 20250910:17.26.20 +Conversion finished. Elapsed time: 11 ms diff --git a/tags.json b/tags.json new file mode 100644 index 0000000..25d333b --- /dev/null +++ b/tags.json @@ -0,0 +1,46556 @@ +{ + "name": "", + "tagType": "Provider", + "tags": [ + { + "name": "Configuration", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "String", + "name": "DetailedViews", + "value": "{ \"MCM05 Sorter Destination and Chutes\": [ \"MCM05\" ], \"MCM04 Sorter Destination, Chutes and Bypass\": [ \"MCM04\" ], \"MCM03 Fluid Inbound\": [ \"MCM03\" ], \"MCM02 Fluid Inbound\": [ \"MCM02\" ], \"MCM01 Bulk Inbound\": [ \"MCM01\" ] }", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "BACKEND_EDGE_DEVICE", + "value": "quattro", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "SiteLatLng", + "value": "{\"lat\":40.19567891533845, \"lng\":-74.56542081870408}", + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[System]Gateway/SystemName", + "name": "SystemName", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "PLC", + "value": "{ \"MCM05\": { \"Area\": \"Sorter Destination and Chutes\", \"SubArea\": \"\" }, \"MCM04\": { \"Area\": \"Sorter Destination, Chutes and Bypass\", \"SubArea\": \"\" }, \"MCM03\": { \"Area\": \"Fluid Inbound\", \"SubArea\": \"\" }, \"MCM02\": { \"Area\": \"Fluid Inbound\", \"SubArea\": \"\" }, \"MCM01\": { \"Area\": \"Bulk Inbound\", \"SubArea\": \"\" } }", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "FC", + "alarmEvalEnabled": false, + "value": "SAT9", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "aws", + "value": "{\"prefix\":\"na\",\"region\":\"us-east-1\"}", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "_types_", + "tagType": "Folder", + "tags": [ + { + "name": "PE", + "tagType": "Folder", + "tags": [ + { + "name": "JPE", + "tagType": "UdtType", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Jammed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jammed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "FPE", + "tagType": "UdtType", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Full" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Full", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + } + ] + }, + { + "name": "MCM", + "typeId": "", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Estop_Actuated_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Branch_Fault_Reset_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Setup_Motor_Speeds" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Motor_Fault_Reset_PB_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Restart_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jam_Restart_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Branch_Fault_Reset_PB_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB_STATE" + }, + "valueSource": "opc", + "name": "Start_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Start_PB_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Local_Estop_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Local_Estop_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Low_Air_Pressure_Reset_PB_STATE" + }, + "valueSource": "opc", + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stop_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Stop_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Low_Air_Pressure_Reset_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Start_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Motor_Fault_Reset_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Restart_PB_STATE" + }, + "valueSource": "opc", + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Branch_Fault_Reset_PB_STATE" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.UPS_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "UPS_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "UPS_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.NAT_Switch_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "NAT_Switch_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Motor_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Motor_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Motor_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.On_UPS_Battery" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "On_UPS_Battery", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "On_UPS_Battery", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.UPS_Battery_Low" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "UPS_Battery_Low", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "UPS_Battery_Low", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stop_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Stop_PB_Pressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Start_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Start_PB_Rressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Start_PB_Rressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.UPS_Battery_On" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "UPS_Battery_On", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "UPS_Battery_On", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Estop_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Estop_PB_Rressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.EStopped_Locally" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "EStopped_Locally", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "EStopped_Locally", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Low_Air_Pressure_Reset_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Motor_Fault_Reset_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Motor_Fault_Reset_PB_Pressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Jam_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Jam_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Jam_Restart_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Jam_Restart_PB_Pressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Estopped" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Estopped", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Estopped", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.UPS_Battery_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "UPS_Battery_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stopped" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Stopped", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Stopped", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Power_Branch_Fault_Reset_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Fire_Relay_De_Energized" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Fire_Relay_De_Energized", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Encoder_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Encoder_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Encoder_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Motor_Fault_Reset_PB_STATE" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Low_Air_Pressure_Reset_PB_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Restart_PB_LT" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "SS_PB", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed" + }, + "valueSource": "opc", + "dataType": "Int4", + "alarms": [ + { + "mode": "BetweenValues", + "setpointA": 1.0, + "setpointB": 2.0, + "name": "Pressed", + "priority": "Medium", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + }, + "displayPath": { + "bindType": "Expression", + "value": "if({Value} \u003d 1, {InstanceName} + \" Stop \", {InstanceName} + \" Start \")\r\n" + } + } + ], + "name": "Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Stopped" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Stopped" + } + ], + "name": "Stopped", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stop_PB" + }, + "valueSource": "opc", + "name": "Stop_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB" + }, + "valueSource": "opc", + "name": "Start_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "S_PB", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed" + }, + "valueSource": "opc", + "dataType": "Int4", + "alarms": [ + { + "mode": "Equality", + "setpointA": 1.0, + "setpointB": 2.0, + "name": "Pressed", + "priority": "Medium", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB" + }, + "valueSource": "opc", + "name": "Start_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "EPC", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB" + }, + "valueSource": "opc", + "name": "Start_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed" + }, + "valueSource": "opc", + "dataType": "Int4", + "alarms": [ + { + "mode": "BetweenValues", + "setpointA": 1.0, + "setpointB": 2.0, + "name": "Pressed", + "priority": "Medium", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + }, + "displayPath": { + "bindType": "Expression", + "value": "if({Value} \u003d 1, {InstanceName} + \" Stop \", {InstanceName} + \" Start \")\r\n" + } + } + ], + "name": "Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Stopped" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Stopped" + } + ], + "name": "Stopped", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stop_PB" + }, + "valueSource": "opc", + "name": "Stop_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "Chute_JR", + "tagType": "UdtType", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Pressed", + "priority": "Diagnostic" + } + ], + "name": "Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.JR_PB" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "JR_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "JR", + "tagType": "UdtType", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed" + }, + "valueSource": "opc", + "dataType": "Int4", + "alarms": [ + { + "setpointA": 1.0, + "name": "Pressed", + "priority": "High", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.JR_PB" + }, + "valueSource": "opc", + "name": "JR_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Type" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "VFD_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Cycle_Time_Factor" + }, + "valueSource": "opc", + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Communication_Fault_Code" + }, + "valueSource": "opc", + "name": "Communication_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Communication_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.VFD_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "VFD_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Disconnected" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Disconnected", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Safe_Off_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Safe_Off_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Reset_Required" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "VFD_Reset_Required", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Voltage" + }, + "valueSource": "opc", + "name": "Voltage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Last_VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Speed_At_60Hz" + }, + "valueSource": "opc", + "name": "Speed_At_60Hz", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Amperage" + }, + "valueSource": "opc", + "name": "Amperage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "VFD_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Frequency" + }, + "valueSource": "opc", + "name": "Frequenncy", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.FPM" + }, + "valueSource": "opc", + "name": "FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Start_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Start_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Stop_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Speed_FPM" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "Speed_FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Maintenance_Mode" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Maintenance_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Jog_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "APF", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Last_VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.FPM" + }, + "valueSource": "opc", + "name": "FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Communication_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Communication_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Reset_Required" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "VFD_Reset_Required", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "VFD_Reset_Required", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.VFD_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "VFD_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "VFD_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Disconnected" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Disconnected", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Disconnected", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Safe_Off_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Safe_Off_Fault", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Safe_Off_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Voltage" + }, + "valueSource": "opc", + "name": "Voltage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Speed_At_30rev" + }, + "valueSource": "opc", + "name": "Speed_At_30rev", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Velocity" + }, + "valueSource": "opc", + "name": "Velocity", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Start_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Start_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Speed_FPM" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "Speed_FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Maintenance_Mode" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Maintenance_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Jog_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Buttons_State" + }, + "valueSource": "opc", + "name": "Buttons_State", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Stop_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Type" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "VFD_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "VFD_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Communication_Fault_Code" + }, + "valueSource": "opc", + "name": "Communication_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Amperage" + }, + "valueSource": "opc", + "name": "Amperage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Cycle_Time_Factor" + }, + "valueSource": "opc", + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "Extendo", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Fully_Extended" + }, + "valueSource": "opc", + "name": "Fully_Extended", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Extendo_Faulted" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Extendo_Faulted", + "priority": "High", + "displayPath": "" + } + ], + "name": "Extendo_Faulted", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Full" + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Faulted" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Communication_Faulted", + "priority": "High" + } + ], + "name": "Communication_Faulted", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.EStopped" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Estopped" + } + ], + "name": "Estopped", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.PEC_Override_PB" + }, + "valueSource": "opc", + "name": "PEC_Override_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Extendo_Faults_Reset_PB" + }, + "valueSource": "opc", + "name": "Extendo_Faults_Reset_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Aopen_Active" + }, + "valueSource": "opc", + "name": "Aopen_Active", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Unloading_Mode" + }, + "valueSource": "opc", + "name": "Unloading_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Saving_Mode" + }, + "valueSource": "opc", + "name": "Power_Saving_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Loading_Mode" + }, + "valueSource": "opc", + "name": "Loading_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Fully_Retracted" + }, + "valueSource": "opc", + "name": "Fully_Retracted", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "IO_BLOCK", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.IP_Address" + }, + "valueSource": "opc", + "dataType": "String", + "name": "IP_Address", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Faulted" + }, + "valueSource": "opc", + "dataType": "Boolean", + "alarms": [ + { + "setpointA": 1.0, + "name": "Communication_Faulted", + "myTag": { + "bindType": "UDTParameter", + "value": "{PathToTag}" + }, + "displayPath": { + "bindType": "UDTParameter", + "value": "{InstanceName}" + }, + "myLocation": { + "bindType": "UDTParameter", + "value": "{RootInstanceName}" + } + } + ], + "name": "Communication_Faulted", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "Chute", + "tagType": "Folder", + "tags": [ + { + "name": "PalletBuild", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.TimeOut" + }, + "valueSource": "opc", + "name": "TimeOut", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Enable_Chute_PB" + }, + "valueSource": "opc", + "name": "Enable_Chute_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Jam" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "notes": "Conveyor is Jammed", + "name": "Jammed", + "label": "", + "displayPath": "", + "priority": "High" + } + ], + "name": "Jam", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.PR_PB_Pressed" + }, + "valueSource": "opc", + "name": "PR_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Half_Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "notes": "Conveyor is Half Full", + "name": "Half Full", + "priority": "High" + } + ], + "name": "Half_Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "notes": "Conveyor is Full", + "name": "Full", + "priority": "High" + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Disabled" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "notes": "Conveyor is Disabled", + "name": "Disabled", + "priority": "Medium" + } + ], + "name": "Disabled", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.PR_PB_STATE" + }, + "valueSource": "opc", + "name": "PR_PB_STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Chute_Type" + }, + "valueSource": "opc", + "name": "Chute_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "D2C", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Chute_Type" + }, + "valueSource": "opc", + "name": "Chute_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.GS_PB_Pressed" + }, + "valueSource": "opc", + "name": "GS_PB", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.No_Container" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "No Container" + } + ], + "name": "No_Container", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.GS_PB_Pressed" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "GS PB Pressed", + "priority": "Low" + } + ], + "name": "GS_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Full", + "priority": "High" + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Disabled" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Disabled" + } + ], + "name": "Disabled", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Half_Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Half Full", + "priority": "High" + } + ], + "name": "Half_Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Jammed" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Jammed", + "priority": "High" + } + ], + "name": "Jam", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "Chute", + "tagType": "UdtType", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarms.Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Full", + "priority": "High" + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Chute_Type" + }, + "valueSource": "opc", + "name": "Chute_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "FL_CHUTE", + "tagType": "UdtType", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.TimeOut" + }, + "valueSource": "opc", + "name": "TimeOut", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Chute_Type" + }, + "valueSource": "opc", + "name": "Chute_Type", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE" + }, + "valueSource": "opc", + "name": "STATE", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Full" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Full" + } + ], + "name": "Full", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Jammed" + }, + "valueSource": "opc", + "alarms": [ + { + "setpointA": 1.0, + "name": "Jammed" + } + ], + "name": "Jammed", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "System", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_running", + "value": true, + "tagType": "AtomicTag" + }, + { + "name": "MCM03", + "tagType": "Folder", + "tags": [ + { + "name": "IO_BLOCK", + "tagType": "Folder", + "tags": [ + { + "name": "FIO", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/FIO", + "name": "UL9_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL7_2_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL12_2_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "PDP03_FIOM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL8_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL11_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL10_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "DPM", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/DPM", + "name": "PS3_1_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS4_1_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS4_1_DPM2", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS3_1_DPM2", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "Folder", + "tags": [ + { + "folder": "Conveyor/VFD", + "name": "UL10_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_4B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "MCM03_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL10_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_4B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS4_4A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL9_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL8_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL12_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_4A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL7_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS3_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL11_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/JR", + "name": "UL9_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "UL11_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL12_2_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS3_1_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS4_1_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL7_2_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "UL10_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL8_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS3_1_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS4_1_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "SS_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/SS_PB", + "name": "UL7_1_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "UL12_1_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "S_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/S_PB", + "name": "PS4_7_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS4_7_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS3_7_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS3_7_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "EPC", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/EPC", + "name": "PS4_7_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS4_7_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL12_1_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS3_7_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL7_1_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL7_1_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS4_7_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS3_7_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL12_1_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL7_1_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL12_1_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL12_1_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS4_7_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS3_7_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS3_7_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL7_1_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "MCM03", + "typeId": "MCM", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Local_Estop_LT", + "tagType": "AtomicTag" + }, + { + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_On", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Low", + "tagType": "AtomicTag" + }, + { + "name": "EStopped_Locally", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Fault", + "tagType": "AtomicTag" + }, + { + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Estopped", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Encoder_Fault", + "tagType": "AtomicTag" + }, + { + "name": "On_UPS_Battery", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB", + "tagType": "AtomicTag" + }, + { + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_logging", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "thread_id", + "value": "1053", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "IdToStatus", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "wbsckt_heartbeat_interval", + "value": 1754471875669, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "wbsckt_messages_send", + "value": "{\"message_list\":[{\"action\":\"pageview\",\"parameters\":{\"siteId\":\"SAT9\",\"sessionId\":\"38f057b9-136f-4899-b4fe-8ed265bb7e54\",\"pageId\":\"Home\",\"timestamp\":1754466650411}}]}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "close_socket", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "download", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "device_count", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "name": "MCM05", + "tagType": "Folder", + "tags": [ + { + "name": "Chute", + "tagType": "Folder", + "tags": [ + { + "name": "D2C", + "tagType": "Folder", + "tags": [ + { + "folder": "Chute/D2C", + "name": "S012057", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013047", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013055", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012063", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013043", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012061", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013007", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013053", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012027", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013033", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013045", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012005", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012065", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012023", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013031", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013023", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012037", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013051", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012069", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012029", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013057", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012053", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013017", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012043", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013015", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012051", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012003", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013021", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013061", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012001", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013049", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012025", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013035", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013005", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013039", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013001", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013063", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013009", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012031", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012007", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013011", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012041", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013027", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012039", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012059", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013041", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012055", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012033", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013003", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013019", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013029", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013037", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012045", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013013", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013025", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012035", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012049", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013059", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012047", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S012067", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "PalletBuild", + "tagType": "Folder", + "tags": [ + { + "folder": "Chute/PalletBuild", + "name": "S012002", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012004", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013048", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013044", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012056", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012006", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012026", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012052", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013006", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012020", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013052", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013062", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012032", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012042", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012034", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013034", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012058", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013008", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013064", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012018", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013042", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012022", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012050", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012064", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012048", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013026", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013040", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013056", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012068", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012046", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012044", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012024", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012014", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013024", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013004", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013032", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013010", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013054", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013038", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013058", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012028", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013036", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013050", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012066", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012008", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013014", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012062", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013028", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012016", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012030", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012038", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012036", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013018", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013022", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S012060", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013012", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013020", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "MCM05", + "typeId": "MCM", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Local_Estop_LT", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_On", + "tagType": "AtomicTag" + }, + { + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Low", + "tagType": "AtomicTag" + }, + { + "name": "Estopped", + "tagType": "AtomicTag" + }, + { + "name": "Encoder_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "On_UPS_Battery", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Fault", + "tagType": "AtomicTag" + }, + { + "name": "EStopped_Locally", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Jam_Restart_PB", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "Chute_JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/Chute_JR", + "name": "S013034_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013026_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012002_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013009_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013049_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013001_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012001_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012014_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013018_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013003_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012042_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012063_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012064_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012018_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013033_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013010_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013050_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012048_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S01223_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013042_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012047_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012032_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013041_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012055_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013025_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012024_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013017_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013004_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012039_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012031_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013057_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S012056_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "Folder", + "tags": [ + { + "folder": "Conveyor/VFD", + "name": "MCM05_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "IO_BLOCK", + "tagType": "Folder", + "tags": [ + { + "name": "DPM", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/DPM", + "name": "DPM01_VS01C", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM01_VS01B", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "FIO", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM10", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM07", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM07", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM03", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM13", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM03", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM02", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM12", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM04", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM15", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM13", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM16", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM10", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM08", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM11", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM06", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM09", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM04", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM14", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM15", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM06", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM02", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM12", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM14", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM05", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM17", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM11", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM08", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM05", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01B_FIOM01", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM01", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "aws_data", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "name": "MCM01", + "tagType": "Folder", + "tags": [ + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "Folder", + "tags": [ + { + "folder": "Conveyor/VFD", + "name": "ULC3_1_TIPPER_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_1_TIPPER_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_1_TIPPER_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_11_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_9B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_12_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_9B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_11_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "MCM01_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_3_PLC (INTRALOX)_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_4_PLC (INTRALOX)_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC3_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_10_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_1_TIPPER_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_12_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC4_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_10_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC2_9A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "ULC1_9A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "MCM01", + "typeId": "MCM", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Local_Estop_LT", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Estopped", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "EStopped_Locally", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Fault", + "tagType": "AtomicTag" + }, + { + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_On", + "tagType": "AtomicTag" + }, + { + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Low", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Encoder_Fault", + "tagType": "AtomicTag" + }, + { + "name": "On_UPS_Battery", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IO_BLOCK", + "tagType": "Folder", + "tags": [ + { + "name": "DPM", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/DPM", + "name": "ULC3_6_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "ULC1_8_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "ULC2_8_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "FIO", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/FIO", + "name": "ULC4_4_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "ULC3_6_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "ULC3_4_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "PDP01_FIOM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "ULC4_6_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "ULC2_4_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "ULC1_4_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/JR", + "name": "ULC4_4_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC3_6_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC1_7_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC3_6_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC1_7_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC2_7_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC4_4_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "ULC2_7_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "S_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/S_PB", + "name": "ULC1_12_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/S_PB", + "name": "ULC1_12_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/S_PB", + "name": "ULC2_12_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/S_PB", + "name": "ULC2_12_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "EPC", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/EPC", + "name": "ULC1_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC4_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC3_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC2_12_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC4_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC1_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC1_12_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC1_12_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC3_6_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC2_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC2_12_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC4_6_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC2_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC3_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC3_6_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "ULC4_6_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "SS_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/SS_PB", + "name": "ULC4_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC2_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC2_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC3_6_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC4_6_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC4_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC4_6_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC1_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC1_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC3_6_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC3_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "ULC3_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "MCM04", + "tagType": "Folder", + "tags": [ + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "EPC", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/EPC", + "name": "BYCB_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "BYAB_3_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "BYCB_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "BYAB_3_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/JR", + "name": "BYCB_2_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "BYAB_2_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "Chute_JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/Chute_JR", + "name": "S011041_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011017_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011068_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011059_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013087_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011001_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011018_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013080_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011002_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013088_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011033_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011049_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011034_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011026_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011073_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S013079_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011065_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011010_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011009_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011025_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011074_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011058_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011042_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011050_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/Chute_JR", + "name": "S011076_JR1", + "typeId": "Station/Chute_JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "SS_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/SS_PB", + "name": "BYCB_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "BYAB_3_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "BYAB_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "BYCB_3_SS2", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "MCM04", + "typeId": "MCM", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Local_Estop_LT", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Low", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "On_UPS_Battery", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Encoder_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Estopped", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_On", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Fault", + "tagType": "AtomicTag" + }, + { + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault", + "tagType": "AtomicTag" + }, + { + "name": "EStopped_Locally", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "Folder", + "tags": [ + { + "folder": "Conveyor/VFD", + "name": "BYAB_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "MCM04_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "BYCB_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "BYAB_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "BYCB_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "IO_BLOCK", + "tagType": "Folder", + "tags": [ + { + "name": "DPM", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/DPM", + "name": "DPM02_VS01C", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM02_VS01A", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM01_VS01A", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM05_VS01A", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM03_VS01A", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "DPM04_VS01A", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "FIO", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM20", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM17", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM20", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM10", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01_FIOM14", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM12", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM07", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM02", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM18", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM09", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM19", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM01", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "BYAB_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM18", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM05", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM22", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM06", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM17", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM19", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM21", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01_FIOM13", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM15", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM03", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01C_FIOM16", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM04", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM11", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM23", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM08", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "VS01A_FIOM16", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "Chute", + "tagType": "Folder", + "tags": [ + { + "name": "PalletBuild", + "tagType": "Folder", + "tags": [ + { + "folder": "Chute/PalletBuild", + "name": "S013082", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011008", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011064", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011062", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011050", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011068", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011004", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011024", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011018", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011046", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011058", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011034", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013086", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011074", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011038", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011040", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011010", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011042", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011048", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011060", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011012", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013084", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011016", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011002", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011028", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011044", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011054", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013088", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011066", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011056", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011076", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011052", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011006", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011036", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011014", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S013080", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011030", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011020", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011032", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011072", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011070", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011026", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/PalletBuild", + "name": "S011022", + "typeId": "Chute/PalletBuild", + "tagType": "UdtInstance", + "tags": [ + { + "name": "PR_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Enable_Chute_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "PR_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "TimeOut", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "Chute", + "tagType": "Folder", + "tags": [ + { + "folder": "Chute/Chute", + "name": "BYAB_4CH", + "typeId": "Chute/Chute", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/Chute", + "name": "BYCB_4CH", + "typeId": "Chute/Chute", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "D2C", + "tagType": "Folder", + "tags": [ + { + "folder": "Chute/D2C", + "name": "S011006_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013079", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011033", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011020_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011036_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011037", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011028_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011060_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011019", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011059", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013087", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013081", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011069", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011053", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013080_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011007_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011019_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011066_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011052_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011021_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011005", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011015_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011051_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011021", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011059_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011043_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011008_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011058_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011018_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011049_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011024_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011017", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011069_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011044_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013083", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011071_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011038_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011015", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011003_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011026_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011053_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011023", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011005_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011007", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011067_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011063", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011070_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011013", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011039_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011056_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011029", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011003", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011045", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011014_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011012_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011016_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011004_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011025", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011063_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011023_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011022_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011067", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011035_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011002_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011046_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011035", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011011_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011072_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011043", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011031_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011041", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011062_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011042_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011073", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011041_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011040_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011061", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013084_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011010_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011071", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011065", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011009_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011045_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011013_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011011", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011034_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011051", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013088_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013086_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011017_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011037_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011009", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011074_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011073_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011030_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011001_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011001", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013085", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011032_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011064_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011065_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011061_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011054_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011025_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011029_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011039", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011027", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011027_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011031", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011033_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011068_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011049", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S013082_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011048_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "No_Container", + "tagType": "AtomicTag" + }, + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Chute/D2C", + "name": "S011050_EN1", + "typeId": "Chute/D2C", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Chute_Type", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Half_Full", + "tagType": "AtomicTag" + }, + { + "name": "Jam", + "tagType": "AtomicTag" + }, + { + "name": "Full", + "tagType": "AtomicTag" + }, + { + "name": "Disabled", + "tagType": "AtomicTag" + }, + { + "name": "GS_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "No_Container", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "MCM02", + "tagType": "Folder", + "tags": [ + { + "name": "IO_BLOCK", + "tagType": "Folder", + "tags": [ + { + "name": "FIO", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/FIO", + "name": "UL2_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "PDP02_FIOM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL4_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL6_2_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL5_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL1_2_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/FIO", + "name": "UL3_3_FIO1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "DPM", + "tagType": "Folder", + "tags": [ + { + "folder": "IO_BLOCK/DPM", + "name": "PS1_1_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS2_1_DPM2", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS1_1_DPM2", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS1_4_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "IP_Address", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "IO_BLOCK/DPM", + "name": "PS2_1_DPM1", + "typeId": "IO_BLOCK", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Faulted", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "IP_Address", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "MCM02", + "typeId": "MCM", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Power_Branch_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Encoder_Fault", + "tagType": "AtomicTag" + }, + { + "name": "EStopped_Locally", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Fault", + "tagType": "AtomicTag" + }, + { + "name": "NAT_Switch_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Low", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_On", + "tagType": "AtomicTag" + }, + { + "name": "Estopped", + "tagType": "AtomicTag" + }, + { + "name": "UPS_Battery_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Estop_PB_Rressed", + "tagType": "AtomicTag" + }, + { + "name": "Fire_Relay_De_Energized", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "On_UPS_Battery", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Rressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Low_Air_Pressure_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "EStop_Actuated_LT", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Local_Estop_LT", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB_STATE", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB", + "tagType": "AtomicTag" + }, + { + "name": "Low_Air_Pressure_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Motor_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Setup_Motor_Speeds", + "tagType": "AtomicTag" + }, + { + "name": "Jam_Restart_PB", + "tagType": "AtomicTag" + }, + { + "name": "Power_Branch_Fault_Reset_PB_LT", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Station", + "tagType": "Folder", + "tags": [ + { + "name": "S_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/S_PB", + "name": "PS2_7_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS2_7_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS1_8_S2", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/S_PB", + "name": "PS1_8_S1", + "typeId": "Station/S_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "JR", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/JR", + "name": "UL6_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL3_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "PS1_1_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL4_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS2_1_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL2_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "PS1_1_JR2", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "PS2_1_JR3", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/JR", + "name": "UL1_2_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "UL5_3_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/JR", + "name": "PS2_1_JR1", + "typeId": "Station/JR", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "JR_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "EPC", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/EPC", + "name": "PS2_7_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS1_8_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL6_1_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS1_8_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL1_1_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL6_1_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL6_1_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL6_1_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS1_8_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL1_1_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL1_1_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS2_7_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS2_7_EPC2", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS1_8_EPC1_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/EPC", + "name": "UL1_1_EPC1", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Station/EPC", + "name": "PS2_7_EPC2_End", + "typeId": "Station/EPC", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Start_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "name": "SS_PB", + "tagType": "Folder", + "tags": [ + { + "folder": "Station/SS_PB", + "name": "UL6_1_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stopped", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Station/SS_PB", + "name": "UL1_1_SS1", + "typeId": "Station/SS_PB", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB", + "tagType": "AtomicTag" + }, + { + "name": "Alarm", + "tagType": "Folder", + "tags": [ + { + "name": "Stopped", + "tagType": "AtomicTag" + }, + { + "name": "Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Start_PB", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "VFD", + "tagType": "Folder", + "tags": [ + { + "folder": "Conveyor/VFD", + "name": "PS1_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_5A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_2A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_4A_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_5_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_9_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_5B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_4B_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS1_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL2_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_2_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_8_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL5_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL6_1_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL4_4_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "PS2_7_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "MCM02_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL1_6_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + } + ] + }, + { + "folder": "Conveyor/VFD", + "name": "UL3_3_VFD1", + "typeId": "Conveyor/VFD", + "tagType": "UdtInstance", + "tags": [ + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "name": "Disconnected", + "tagType": "AtomicTag" + }, + { + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "VFD_Type", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Voltage", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "Latency", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "StringArray", + "name": "rolling_latency", + "alarmEvalEnabled": true, + "value": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "first_pass", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "prev_key", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "avg_latency", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[~]System/aws_data.value", + "name": "aws_data_copy", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "last_alarm_change_ts", + "formatString": "yyyy-MM-dd h:mm:ss aa", + "tagType": "AtomicTag" + } + ] + } + ] +} \ No newline at end of file