From 081ce4239ca5662e3a3d516978f40c4449da88c7 Mon Sep 17 00:00:00 2001 From: "gigi.mamaladze" Date: Wed, 10 Sep 2025 17:48:30 +0400 Subject: [PATCH] Created Project --- .gitignore | 2 + .../page-config/config.json | 228 + .../page-config/resource.json | 16 + .../session-props/props.json | 226 + .../session-props/resource.json | 16 + .../Detailed-Views/Inbound PH1/resource.json | 17 + .../Detailed-Views/Inbound PH1/thumbnail.png | Bin 0 -> 33113 bytes .../Detailed-Views/Inbound PH1/view.json | 3471 ++ .../Detailed-Views/Template/resource.json | 17 + .../Detailed-Views/Template/thumbnail.png | Bin 0 -> 13334 bytes .../views/Detailed-Views/Template/view.json | 59 + .../views/Detailed-Views/Test/resource.json | 17 + .../views/Detailed-Views/Test/thumbnail.png | Bin 0 -> 5882 bytes .../views/Detailed-Views/Test/view.json | 87 + CDW5_SCADA/ignition/global-props/data.bin | Bin 0 -> 481 bytes .../ignition/global-props/resource.json | 16 + CDW5_SCADA/project.json | 7 + .../script-python/AWS/build_url/code.py | 101 + .../script-python/AWS/build_url/resource.json | 16 + .../script-python/AWS/credentials/code.py | 43 + .../AWS/credentials/resource.json | 16 + .../script-python/AWS/wbsckt_abort/code.py | 19 + .../AWS/wbsckt_abort/resource.json | 16 + .../script-python/AWS/web_socket/code.py | 66 + .../AWS/web_socket/resource.json | 16 + .../script-python/AWS/web_socket_send/code.py | 21 + .../AWS/web_socket_send/resource.json | 16 + .../page-config/config.json | 228 + .../page-config/resource.json | 16 + .../session-permissions/data.bin | 9 + .../session-permissions/resource.json | 16 + .../session-props/props.json | 226 + .../session-props/resource.json | 16 + .../session-scripts/data.bin | 1 + .../session-scripts/resource.json | 16 + .../Alt-Colours/Critical/resource.json | 16 + .../Alt-Colours/Critical/style.json | 16 + .../Alt-Colours/Diagnostic/resource.json | 16 + .../Alt-Colours/Diagnostic/style.json | 16 + .../Alt-Colours/High/resource.json | 16 + .../Alarms-Styles/Alt-Colours/High/style.json | 15 + .../Alt-Colours/Low/resource.json | 16 + .../Alarms-Styles/Alt-Colours/Low/style.json | 15 + .../Alt-Colours/Medium/resource.json | 16 + .../Alt-Colours/Medium/style.json | 15 + .../Alarms-Styles/Critical/resource.json | 16 + .../Alarms-Styles/Critical/style.json | 16 + .../Alarms-Styles/Diagnostic/resource.json | 16 + .../Alarms-Styles/Diagnostic/style.json | 16 + .../Alarms-Styles/High/resource.json | 16 + .../Alarms-Styles/High/style.json | 15 + .../Alarms-Styles/Low/resource.json | 16 + .../Alarms-Styles/Low/style.json | 15 + .../Alarms-Styles/Medium/resource.json | 16 + .../Alarms-Styles/Medium/style.json | 15 + .../Alarms-Styles/NoAlarm-Black/resource.json | 16 + .../Alarms-Styles/NoAlarm-Black/style.json | 15 + .../Alarms-Styles/NoAlarm/resource.json | 16 + .../Alarms-Styles/NoAlarm/style.json | 15 + .../Alarms-Styles/Shelved/resource.json | 16 + .../Alarms-Styles/Shelved/style.json | 16 + .../Alerts/alertButton/resource.json | 16 + .../Alerts/alertButton/style.json | 38 + .../Alerts/alertButtonSecondary/resource.json | 16 + .../Alerts/alertButtonSecondary/style.json | 30 + .../Alerts/alertClose/resource.json | 16 + .../Alerts/alertClose/style.json | 16 + .../Alerts/alertMessage/resource.json | 16 + .../Alerts/alertMessage/style.json | 8 + .../Alerts/alertTitle/resource.json | 16 + .../Alerts/alertTitle/style.json | 9 + .../Alerts/states/error/resource.json | 16 + .../Alerts/states/error/style.json | 11 + .../Alerts/states/errorBtn1/resource.json | 16 + .../Alerts/states/errorBtn1/style.json | 25 + .../Alerts/states/errorBtn2/resource.json | 16 + .../Alerts/states/errorBtn2/style.json | 33 + .../Alerts/states/info/resource.json | 16 + .../Alerts/states/info/style.json | 11 + .../Alerts/states/infoBtn1/resource.json | 16 + .../Alerts/states/infoBtn1/style.json | 25 + .../Alerts/states/infoBtn2/resource.json | 16 + .../Alerts/states/infoBtn2/style.json | 33 + .../Alerts/states/success/resource.json | 16 + .../Alerts/states/success/style.json | 11 + .../Alerts/states/successBtn1/resource.json | 16 + .../Alerts/states/successBtn1/style.json | 25 + .../Alerts/states/successBtn2/resource.json | 16 + .../Alerts/states/successBtn2/style.json | 33 + .../Alerts/states/warning/resource.json | 16 + .../Alerts/states/warning/style.json | 11 + .../Alerts/states/warningBtn1/resource.json | 16 + .../Alerts/states/warningBtn1/style.json | 25 + .../Alerts/states/warningBtn2/resource.json | 16 + .../Alerts/states/warningBtn2/style.json | 33 + .../Controller/resource.json | 16 + .../Background-Styles/Controller/style.json | 8 + .../Grey-Background/resource.json | 16 + .../Grey-Background/style.json | 7 + .../Main-Background/resource.json | 16 + .../Main-Background/style.json | 7 + .../Buttons/Button-Menu/resource.json | 16 + .../Buttons/Button-Menu/style.json | 8 + .../Buttons/Clear-Background/resource.json | 16 + .../Buttons/Clear-Background/style.json | 7 + .../style-classes/Buttons/PB_1/resource.json | 16 + .../style-classes/Buttons/PB_1/style.json | 9 + .../DeviceManagerRows/resource.json | 16 + .../DeviceManagerRows/style.json | 12 + .../Device-Connected/resource.json | 16 + .../Disconnects/Device-Connected/style.json | 7 + .../Device-Disconnected/resource.json | 16 + .../Device-Disconnected/style.json | 9 + .../Dropdown/DropDownBox/resource.json | 16 + .../Dropdown/DropDownBox/style.json | 9 + .../EstopActivated/resource.json | 16 + .../EstopActivated/style.json | 8 + .../EstopActivated101/resource.json | 16 + .../EstopActivated101/style.json | 12 + .../EstopDeactivated/resource.json | 16 + .../EstopDeactivated/style.json | 8 + .../EstopDeactivated100/resource.json | 16 + .../EstopDeactivated100/style.json | 12 + .../Framework/Card/Bold_Text/resource.json | 16 + .../Framework/Card/Bold_Text/style.json | 7 + .../Framework/Card/Card/resource.json | 16 + .../Framework/Card/Card/style.json | 13 + .../Card/Card_transparent/resource.json | 16 + .../Card/Card_transparent/style.json | 8 + .../Card/Data/value_error/resource.json | 16 + .../Card/Data/value_error/style.json | 17 + .../Card/Data/value_info/resource.json | 16 + .../Framework/Card/Data/value_info/style.json | 17 + .../Card/Data/value_off/resource.json | 16 + .../Framework/Card/Data/value_off/style.json | 17 + .../Card/Data/value_success/resource.json | 16 + .../Card/Data/value_success/style.json | 17 + .../Card/Data/value_warning/resource.json | 16 + .../Card/Data/value_warning/style.json | 17 + .../Framework/Card/Embedded/resource.json | 16 + .../Framework/Card/Embedded/style.json | 7 + .../Card/Embedded_transparent/resource.json | 16 + .../Card/Embedded_transparent/style.json | 9 + .../Framework/Card/Item/resource.json | 16 + .../Framework/Card/Item/style.json | 10 + .../Framework/Card/Item_Border/resource.json | 16 + .../Framework/Card/Item_Border/style.json | 9 + .../Framework/Card/Label/resource.json | 16 + .../Framework/Card/Label/style.json | 12 + .../Framework/Card/Row/resource.json | 16 + .../Framework/Card/Row/style.json | 7 + .../Framework/Card/Title/resource.json | 16 + .../Framework/Card/Title/style.json | 17 + .../Card/Title_transparent/resource.json | 16 + .../Card/Title_transparent/style.json | 17 + .../Framework/Card/Value/resource.json | 16 + .../Framework/Card/Value/style.json | 10 + .../Framework/Cards/Bold_Text/data.bin | 1 + .../Framework/Cards/Bold_Text/resource.json | 16 + .../Framework/Cards/Card/resource.json | 16 + .../Framework/Cards/Card/style.json | 13 + .../Framework/Cards/Embedded/resource.json | 16 + .../Framework/Cards/Embedded/style.json | 7 + .../Framework/Cards/Item/data.bin | 1 + .../Framework/Cards/Item/resource.json | 16 + .../Framework/Cards/Item_Border/data.bin | 1 + .../Framework/Cards/Item_Border/resource.json | 16 + .../Framework/Cards/Label/resource.json | 16 + .../Framework/Cards/Label/style.json | 12 + .../Framework/Cards/Row/resource.json | 16 + .../Framework/Cards/Row/style.json | 7 + .../Framework/Cards/Title/data.bin | 1 + .../Framework/Cards/Title/resource.json | 16 + .../Framework/Cards/Value/resource.json | 16 + .../Framework/Cards/Value/style.json | 10 + .../ColorPicker/Container/resource.json | 16 + .../ColorPicker/Container/style.json | 11 + .../Highlight/Pulse-Clear/resource.json | 16 + .../Highlight/Pulse-Clear/style.json | 5 + .../Highlight/Pulse-Diagnostic/resource.json | 16 + .../Highlight/Pulse-Diagnostic/style.json | 18 + .../Highlight/Pulse-High/resource.json | 16 + .../Highlight/Pulse-High/style.json | 18 + .../Highlight/Pulse-Low/resource.json | 16 + .../Highlight/Pulse-Low/style.json | 18 + .../Highlight/Pulse-Medium/resource.json | 16 + .../Highlight/Pulse-Medium/style.json | 18 + .../style-classes/Highlight/Pulse/style.json | 18 + .../Input/Button/Action_Button/resource.json | 16 + .../Input/Button/Action_Button/style.json | 9 + .../Action_Button_Disabled/resource.json | 16 + .../Button/Action_Button_Disabled/style.json | 10 + .../Button/Action_Button_Error/resource.json | 16 + .../Button/Action_Button_Error/style.json | 10 + .../Input/Button/Export_Button/resource.json | 16 + .../Input/Button/Export_Button/style.json | 12 + .../Input/Button/General_Button/resource.json | 16 + .../Input/Button/General_Button/style.json | 12 + .../Button/Secondary_minimal/resource.json | 16 + .../Input/Button/Secondary_minimal/style.json | 8 + .../style-classes/Labels/Label/resource.json | 16 + .../style-classes/Labels/Label/style.json | 11 + .../Labels/Label_1/resource.json | 16 + .../style-classes/Labels/Label_1/style.json | 11 + .../PopUp-Styles/InfoButton/resource.json | 16 + .../PopUp-Styles/InfoButton/style.json | 10 + .../PopUp-Styles/InfoLabel/resource.json | 16 + .../PopUp-Styles/InfoLabel/style.json | 18 + .../Information-Device/resource.json | 16 + .../Information-Device/style.json | 18 + .../State-Styles/AAA-Style/resource.json | 16 + .../State-Styles/AAA-Style/style.json | 7 + .../Alt-Background-Fill/State0/resource.json | 16 + .../Alt-Background-Fill/State0/style.json | 10 + .../Alt-Background-Fill/State1/resource.json | 16 + .../Alt-Background-Fill/State1/style.json | 10 + .../Alt-Background-Fill/State2/resource.json | 16 + .../Alt-Background-Fill/State2/style.json | 10 + .../Alt-Background-Fill/State3/resource.json | 16 + .../Alt-Background-Fill/State3/style.json | 10 + .../Alt-Background-Fill/State4/resource.json | 16 + .../Alt-Background-Fill/State4/style.json | 10 + .../Alt-Background-Fill/State5/resource.json | 16 + .../Alt-Background-Fill/State5/style.json | 10 + .../Background-Fill/State0/resource.json | 16 + .../Background-Fill/State0/style.json | 10 + .../Background-Fill/State1/resource.json | 16 + .../Background-Fill/State1/style.json | 10 + .../Background-Fill/State1_Alt/resource.json | 16 + .../Background-Fill/State1_Alt/style.json | 10 + .../Background-Fill/State2/resource.json | 16 + .../Background-Fill/State2/style.json | 10 + .../Background-Fill/State2_Alt/resource.json | 16 + .../Background-Fill/State2_Alt/style.json | 10 + .../Background-Fill/State3/resource.json | 16 + .../Background-Fill/State3/style.json | 10 + .../Background-Fill/State3_Alt/resource.json | 16 + .../Background-Fill/State3_Alt/style.json | 10 + .../Background-Fill/State4/resource.json | 16 + .../Background-Fill/State4/style.json | 10 + .../Background-Fill/State4_Alt/resource.json | 16 + .../Background-Fill/State4_Alt/style.json | 10 + .../Background-Fill/State5/resource.json | 16 + .../Background-Fill/State5/style.json | 10 + .../Background-Fill/State5_Alt/resource.json | 16 + .../Background-Fill/State5_Alt/style.json | 10 + .../Background-Fill/State6/resource.json | 16 + .../Background-Fill/State6/style.json | 10 + .../State-Styles/State0/resource.json | 16 + .../State-Styles/State0/style.json | 7 + .../State-Styles/State1/resource.json | 16 + .../State-Styles/State1/style.json | 7 + .../State-Styles/State101/resource.json | 16 + .../State-Styles/State101/style.json | 13 + .../State-Styles/State102/resource.json | 16 + .../State-Styles/State102/style.json | 13 + .../State-Styles/State103/resource.json | 16 + .../State-Styles/State103/style.json | 13 + .../State-Styles/State104/resource.json | 16 + .../State-Styles/State104/style.json | 13 + .../State-Styles/State105/resource.json | 16 + .../State-Styles/State105/style.json | 13 + .../State-Styles/State106/resource.json | 16 + .../State-Styles/State106/style.json | 13 + .../State-Styles/State2/resource.json | 16 + .../State-Styles/State2/style.json | 7 + .../State-Styles/State201/resource.json | 16 + .../State-Styles/State201/style.json | 13 + .../State-Styles/State202/resource.json | 16 + .../State-Styles/State202/style.json | 13 + .../State-Styles/State203/resource.json | 16 + .../State-Styles/State203/style.json | 13 + .../State-Styles/State204/resource.json | 16 + .../State-Styles/State204/style.json | 13 + .../State-Styles/State205/resource.json | 16 + .../State-Styles/State205/style.json | 13 + .../State-Styles/State3/resource.json | 16 + .../State-Styles/State3/style.json | 7 + .../State-Styles/State4/resource.json | 16 + .../State-Styles/State4/style.json | 7 + .../State-Styles/State5/resource.json | 16 + .../State-Styles/State5/style.json | 7 + .../State-Styles/State6/resource.json | 16 + .../State-Styles/State6/style.json | 7 + .../Text-Styles/Ariel-Bold-12pt/resource.json | 16 + .../Text-Styles/Ariel-Bold-12pt/style.json | 10 + .../Ariel-Bold-White-12pt/resource.json | 16 + .../Ariel-Bold-White-12pt/style.json | 10 + .../Text-Styles/Controller/resource.json | 16 + .../Text-Styles/Controller/style.json | 10 + .../Text-Styles/Docked-Buttons/resource.json | 16 + .../Text-Styles/Docked-Buttons/style.json | 9 + .../CenterAlign_with_Padding/resource.json | 16 + .../Text/CenterAlign_with_Padding/style.json | 10 + .../style-classes/Text/InfoText/resource.json | 16 + .../style-classes/Text/InfoText/style.json | 8 + .../style-classes/Text/Label/resource.json | 16 + .../style-classes/Text/Label/style.json | 7 + .../Text/LeftAlign_with_Padding/resource.json | 16 + .../Text/LeftAlign_with_Padding/style.json | 8 + .../RightAlign_with_Padding/resource.json | 16 + .../Text/RightAlign_with_Padding/style.json | 8 + .../Text/TitleText/resource.json | 16 + .../style-classes/Text/TitleText/style.json | 10 + .../Text/labelText/resource.json | 16 + .../style-classes/Text/labelText/style.json | 5 + .../stylesheet/resource.json | 16 + .../stylesheet/stylesheet.css | 70 + .../MAP-Home/resource.json | 17 + .../MAP-Home/thumbnail.png | Bin 0 -> 62407 bytes .../Additional-Home-View/MAP-Home/view.json | 108 + .../Alarm-Views/AlarmTable/resource.json | 17 + .../Alarm-Views/AlarmTable/thumbnail.png | Bin 0 -> 2983 bytes .../views/Alarm-Views/AlarmTable/view.json | 1281 + .../Alarm-Views/Docked-Alarm/resource.json | 17 + .../Alarm-Views/Docked-Alarm/thumbnail.png | Bin 0 -> 6144 bytes .../views/Alarm-Views/Docked-Alarm/view.json | 1978 + .../HistoricalAlarms/resource.json | 17 + .../HistoricalAlarms/thumbnail.png | Bin 0 -> 46524 bytes .../Alarm-Views/HistoricalAlarms/view.json | 2897 + .../views/Alarm-Views/RealTime/resource.json | 17 + .../views/Alarm-Views/RealTime/thumbnail.png | Bin 0 -> 51842 bytes .../views/Alarm-Views/RealTime/view.json | 4781 ++ .../views/Alerts/alert/resource.json | 17 + .../views/Alerts/alert/thumbnail.png | Bin 0 -> 5440 bytes .../views/Alerts/alert/view.json | 749 + .../views/Alerts/info-examples/resource.json | 17 + .../views/Alerts/info-examples/thumbnail.png | Bin 0 -> 50184 bytes .../views/Alerts/info-examples/view.json | 479 + .../views/Detailed-Views/Detail/resource.json | 17 + .../views/Detailed-Views/Detail/thumbnail.png | Bin 0 -> 9998 bytes .../views/Detailed-Views/Detail/view.json | 175 + .../Detailed-Views/Template/resource.json | 17 + .../Detailed-Views/Template/thumbnail.png | Bin 0 -> 3224 bytes .../views/Detailed-Views/Template/view.json | 59 + .../views/Detailed-Views/Test/resource.json | 17 + .../views/Detailed-Views/Test/thumbnail.png | Bin 0 -> 5882 bytes .../views/Detailed-Views/Test/view.json | 87 + .../Breakpoint Embedded/resource.json | 17 + .../Breakpoint Embedded/thumbnail.png | Bin 0 -> 3433 bytes .../Framework/Breakpoint Embedded/view.json | 113 + .../views/Framework/Breakpoint/resource.json | 17 + .../views/Framework/Breakpoint/thumbnail.png | Bin 0 -> 5203 bytes .../views/Framework/Breakpoint/view.json | 123 + .../Framework/Card/Card (1)/resource.json | 17 + .../Framework/Card/Card (1)/thumbnail.png | Bin 0 -> 2825 bytes .../views/Framework/Card/Card (1)/view.json | 125 + .../views/Framework/Card/Card/resource.json | 17 + .../views/Framework/Card/Card/thumbnail.png | Bin 0 -> 3811 bytes .../views/Framework/Card/Card/view.json | 151 + .../Card/Card_Collapsible/resource.json | 17 + .../Card/Card_Collapsible/thumbnail.png | Bin 0 -> 12867 bytes .../Framework/Card/Card_Collapsible/view.json | 212 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 2306 bytes .../Card_Collapsible_Transparent/view.json | 237 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 24845 bytes .../view.json | 431 + .../Nested/Card_Collapsible/resource.json | 17 + .../Nested/Card_Collapsible/thumbnail.png | Bin 0 -> 12852 bytes .../Card/Nested/Card_Collapsible/view.json | 213 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 10667 bytes .../Card_Collapsible_Transparent/view.json | 237 + .../Color Picker/Color Picker/resource.json | 17 + .../Color Picker/Color Picker/thumbnail.png | Bin 0 -> 11197 bytes .../Color Picker/Color Picker/view.json | 787 + .../Color Picker/Color/resource.json | 16 + .../Framework/Color Picker/Color/view.json | 65 + .../views/Header/Header/resource.json | 17 + .../views/Header/Header/thumbnail.png | Bin 0 -> 2604 bytes .../views/Header/Header/view.json | 1204 + .../Main-Views/CommandControl/resource.json | 17 + .../Main-Views/CommandControl/thumbnail.png | Bin 0 -> 35668 bytes .../views/Main-Views/CommandControl/view.json | 673 + .../Commissioning Tool/CT_Main/resource.json | 17 + .../Commissioning Tool/CT_Main/thumbnail.png | Bin 0 -> 11059 bytes .../Commissioning Tool/CT_Main/view.json | 7467 +++ .../Commissioning Tool/Column/resource.json | 17 + .../Commissioning Tool/Column/thumbnail.png | Bin 0 -> 960 bytes .../Commissioning Tool/Column/view.json | 110 + .../Commissioning Tool/Message/resource.json | 17 + .../Commissioning Tool/Message/thumbnail.png | Bin 0 -> 889 bytes .../Commissioning Tool/Message/view.json | 115 + .../Commissioning Tool/Row/resource.json | 17 + .../Commissioning Tool/Row/thumbnail.png | Bin 0 -> 4590 bytes .../Commissioning Tool/Row/view.json | 318 + .../SequenceTester/resource.json | 17 + .../SequenceTester/thumbnail.png | Bin 0 -> 21061 bytes .../SequenceTester/view.json | 709 + .../Upload_files/resource.json | 17 + .../Upload_files/thumbnail.png | Bin 0 -> 10161 bytes .../Commissioning Tool/Upload_files/view.json | 198 + .../UserFeedBack/resource.json | 17 + .../UserFeedBack/thumbnail.png | Bin 0 -> 1839 bytes .../Commissioning Tool/UserFeedBack/view.json | 242 + .../AddDetailedViewMapping/resource.json | 17 + .../AddDetailedViewMapping/thumbnail.png | Bin 0 -> 14345 bytes .../AddDetailedViewMapping/view.json | 778 + .../Config-Tool/AddDevice/resource.json | 17 + .../Config-Tool/AddDevice/thumbnail.png | Bin 0 -> 16011 bytes .../Config-Tool/AddDevice/view.json | 1001 + .../Config-Tool/MainView/resource.json | 17 + .../Config-Tool/MainView/thumbnail.png | Bin 0 -> 35508 bytes .../Main-Views/Config-Tool/MainView/view.json | 2408 + .../Config-Tool/SideMenu/resource.json | 17 + .../Config-Tool/SideMenu/thumbnail.png | Bin 0 -> 9344 bytes .../Main-Views/Config-Tool/SideMenu/view.json | 66 + .../Config-Tool/TagViewer/resource.json | 17 + .../Config-Tool/TagViewer/thumbnail.png | Bin 0 -> 25360 bytes .../Config-Tool/TagViewer/view.json | 237 + .../Device-Manager/Device/resource.json | 17 + .../Device-Manager/Device/thumbnail.png | Bin 0 -> 773 bytes .../Device-Manager/Device/view.json | 244 + .../DeviceManager/resource.json | 17 + .../DeviceManager/thumbnail.png | Bin 0 -> 18826 bytes .../Device-Manager/DeviceManager/view.json | 1713 + .../DriverDropDown/resource.json | 17 + .../DriverDropDown/thumbnail.png | Bin 0 -> 325 bytes .../Device-Manager/DriverDropDown/view.json | 97 + .../views/Main-Views/Help/resource.json | 17 + .../views/Main-Views/Help/thumbnail.png | Bin 0 -> 19548 bytes .../views/Main-Views/Help/view.json | 792 + .../views/Main-Views/Home/resource.json | 17 + .../views/Main-Views/Home/thumbnail.png | Bin 0 -> 2798 bytes .../views/Main-Views/Home/view.json | 296 + .../views/Main-Views/Monitron/resource.json | 17 + .../views/Main-Views/Monitron/thumbnail.png | Bin 0 -> 19550 bytes .../views/Main-Views/Monitron/view.json | 55 + .../Notify-Tool/Notify-Main/resource.json | 17 + .../Notify-Tool/Notify-Main/thumbnail.png | Bin 0 -> 26414 bytes .../Notify-Tool/Notify-Main/view.json | 2890 + .../Main-Views/OilMonitoring/resource.json | 17 + .../Main-Views/OilMonitoring/thumbnail.png | Bin 0 -> 14217 bytes .../views/Main-Views/OilMonitoring/view.json | 55 + .../views/Main-Views/S3/manage/resource.json | 17 + .../views/Main-Views/S3/manage/thumbnail.png | Bin 0 -> 35196 bytes .../views/Main-Views/S3/manage/view.json | 918 + .../Main-Views/TempMonitoring/resource.json | 17 + .../Main-Views/TempMonitoring/thumbnail.png | Bin 0 -> 5947 bytes .../views/Main-Views/TempMonitoring/view.json | 55 + .../views/Main-Views/ToolBox/resource.json | 17 + .../views/Main-Views/ToolBox/thumbnail.png | Bin 0 -> 21151 bytes .../views/Main-Views/ToolBox/view.json | 155 + .../Docked-South/resource.json | 17 + .../Docked-South/thumbnail.png | Bin 0 -> 24407 bytes .../Navigation-Views/Docked-South/view.json | 3260 ++ .../Docked-West/resource.json | 17 + .../Docked-West/thumbnail.png | Bin 0 -> 6822 bytes .../Navigation-Views/Docked-West/view.json | 954 + .../views/Navigation-Views/Key/resource.json | 17 + .../views/Navigation-Views/Key/thumbnail.png | Bin 0 -> 9829 bytes .../views/Navigation-Views/Key/view.json | 155 + .../Navigation-Views/NavLabel/resource.json | 17 + .../Navigation-Views/NavLabel/thumbnail.png | Bin 0 -> 763 bytes .../views/Navigation-Views/NavLabel/view.json | 146 + .../Navigation-Views/Nav_Button/resource.json | 17 + .../Navigation-Views/Nav_Button/thumbnail.png | Bin 0 -> 214 bytes .../Navigation-Views/Nav_Button/view.json | 97 + .../NavigationButton/resource.json | 17 + .../NavigationButton/thumbnail.png | Bin 0 -> 278 bytes .../NavigationButton/view.json | 141 + .../Command-Authenticate/resource.json | 17 + .../Command-Authenticate/thumbnail.png | Bin 0 -> 8362 bytes .../Command-Authenticate/view.json | 184 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 15606 bytes .../Information-Docked-East-Button/view.json | 939 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 15227 bytes .../view.json | 651 + .../Information-Docked-East-EPC/resource.json | 17 + .../Information-Docked-East-EPC/thumbnail.png | Bin 0 -> 74 bytes .../Information-Docked-East-EPC/view.json | 659 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 18058 bytes .../Information-Docked-East-Extendo/view.json | 1999 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 18157 bytes .../Information-Docked-East-JR-PB/view.json | 796 + .../Information-Docked-East-MCM/resource.json | 17 + .../Information-Docked-East-MCM/thumbnail.png | Bin 0 -> 16095 bytes .../Information-Docked-East-MCM/view.json | 3364 ++ .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 16327 bytes .../view.json | 968 + .../resource.json | 17 + .../thumbnail.png | Bin 0 -> 12275 bytes .../view.json | 1914 + .../Information-Docked-East-VFD/resource.json | 17 + .../Information-Docked-East-VFD/thumbnail.png | Bin 0 -> 13583 bytes .../Information-Docked-East-VFD/view.json | 2676 + .../Information-Docked-East/resource.json | 17 + .../Information-Docked-East/thumbnail.png | Bin 0 -> 8190 bytes .../Information-Docked-East/view.json | 1099 + .../Information/resource.json | 17 + .../Information/thumbnail.png | Bin 0 -> 55493 bytes .../Information/view.json | 4965 ++ .../PopUp-Views/DatabaseError/resource.json | 17 + .../PopUp-Views/DatabaseError/thumbnail.png | Bin 0 -> 9374 bytes .../views/PopUp-Views/DatabaseError/view.json | 91 + .../Detail-View-Filter/resource.json | 17 + .../Detail-View-Filter/thumbnail.png | Bin 0 -> 20055 bytes .../PopUp-Views/Detail-View-Filter/view.json | 1122 + .../Device/Information-Device/resource.json | 17 + .../Device/Information-Device/thumbnail.png | Bin 0 -> 2018 bytes .../Device/Information-Device/view.json | 447 + .../views/PopUp-Views/EditItem/resource.json | 17 + .../views/PopUp-Views/EditItem/thumbnail.png | Bin 0 -> 13173 bytes .../views/PopUp-Views/EditItem/view.json | 1004 + .../views/PopUp-Views/Error/resource.json | 17 + .../views/PopUp-Views/Error/thumbnail.png | Bin 0 -> 1495 bytes .../views/PopUp-Views/Error/view.json | 97 + .../Legend-popup-view/resource.json | 17 + .../Legend-popup-view/thumbnail.png | Bin 0 -> 16526 bytes .../Legend_Popup/Legend-popup-view/view.json | 1201 + .../Legend_Popup/Legend-row/resource.json | 17 + .../Legend_Popup/Legend-row/thumbnail.png | Bin 0 -> 761 bytes .../Legend_Popup/Legend-row/view.json | 204 + .../Legend_Popup/Legend-table/resource.json | 17 + .../Legend_Popup/Legend-table/thumbnail.png | Bin 0 -> 11570 bytes .../Legend_Popup/Legend-table/view.json | 387 + .../Notify-Popup-Entry/resource.json | 17 + .../Notify-Popup-Entry/thumbnail.png | Bin 0 -> 479 bytes .../Notify-Tool/Notify-Popup-Entry/view.json | 522 + .../Notify-Tool/Notify-Popup/resource.json | 17 + .../Notify-Tool/Notify-Popup/thumbnail.png | Bin 0 -> 1035 bytes .../Notify-Tool/Notify-Popup/view.json | 176 + .../Notify-Submit-Popup/resource.json | 17 + .../Notify-Submit-Popup/thumbnail.png | Bin 0 -> 639 bytes .../Notify-Tool/Notify-Submit-Popup/view.json | 396 + .../Permissions Error/resource.json | 17 + .../Permissions Error/thumbnail.png | Bin 0 -> 2423 bytes .../PopUp-Views/Permissions Error/view.json | 46 + .../S3/Audit/Log_Viewer/resource.json | 17 + .../S3/Audit/Log_Viewer/thumbnail.png | Bin 0 -> 4696 bytes .../PopUp-Views/S3/Audit/Log_Viewer/view.json | 239 + .../S3/Versions/Log_Viewer/resource.json | 17 + .../S3/Versions/Log_Viewer/thumbnail.png | Bin 0 -> 6160 bytes .../S3/Versions/Log_Viewer/view.json | 238 + .../views/PopUp-Views/Search/resource.json | 17 + .../views/PopUp-Views/Search/thumbnail.png | Bin 0 -> 3619 bytes .../views/PopUp-Views/Search/view.json | 371 + .../views/PopUp-Views/UserInfo/resource.json | 17 + .../views/PopUp-Views/UserInfo/thumbnail.png | Bin 0 -> 1462 bytes .../views/PopUp-Views/UserInfo/view.json | 138 + .../CommandControl/resource.json | 17 + .../CommandControl/thumbnail.png | Bin 0 -> 5247 bytes .../Controller-Views/CommandControl/view.json | 592 + .../CommandControlActions/resource.json | 17 + .../CommandControlActions/thumbnail.png | Bin 0 -> 1709 bytes .../CommandControlActions/view.json | 932 + .../CommandControlAlarms/resource.json | 17 + .../CommandControlAlarms/thumbnail.png | Bin 0 -> 1360 bytes .../CommandControlAlarms/view.json | 410 + .../CommandControlStatus/resource.json | 17 + .../CommandControlStatus/thumbnail.png | Bin 0 -> 698 bytes .../CommandControlStatus/view.json | 197 + .../ControllerStatus/resource.json | 17 + .../ControllerStatus/thumbnail.png | Bin 0 -> 7911 bytes .../ControllerStatus/view.json | 789 + .../Area_Nav_Button/resource.json | 17 + .../Area_Nav_Button/thumbnail.png | Bin 0 -> 234 bytes .../Equipment-Views/Area_Nav_Button/view.json | 105 + .../Equipment-Views/Button/resource.json | 17 + .../Equipment-Views/Button/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/Button/view.json | 684 + .../Equipment-Views/Camera/resource.json | 17 + .../Equipment-Views/Camera/thumbnail.png | Bin 0 -> 81 bytes .../Equipment-Views/Camera/view.json | 728 + .../ControlCabinet/resource.json | 17 + .../ControlCabinet/thumbnail.png | Bin 0 -> 473 bytes .../Equipment-Views/ControlCabinet/view.json | 313 + .../DeviceStatus/resource.json | 17 + .../DeviceStatus/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/DeviceStatus/view.json | 581 + .../Equipment-Views/Divert_Arm/resource.json | 17 + .../Equipment-Views/Divert_Arm/thumbnail.png | Bin 0 -> 8286 bytes .../Equipment-Views/Divert_Arm/view.json | 537 + .../Equipment-Views/Extendo/resource.json | 16 + .../Equipment-Views/Extendo/view.json | 604 + .../Equipment-Views/JAM/resource.json | 17 + .../Equipment-Views/JAM/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/JAM/view.json | 76 + .../Equipment-Views/MCM/resource.json | 17 + .../Equipment-Views/MCM/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/MCM/view.json | 571 + .../PressureSwitch/resource.json | 17 + .../PressureSwitch/thumbnail.png | Bin 0 -> 78 bytes .../Equipment-Views/PressureSwitch/view.json | 648 + .../Equipment-Views/PullChord/resource.json | 17 + .../Equipment-Views/PullChord/thumbnail.png | Bin 0 -> 85 bytes .../Equipment-Views/PullChord/view.json | 608 + .../PullChord_End/resource.json | 16 + .../Equipment-Views/PullChord_End/view.json | 535 + .../PullChord_Line/resource.json | 16 + .../Equipment-Views/PullChord_Line/view.json | 558 + .../PullChord_Line_Vertical/resource.json | 16 + .../PullChord_Line_Vertical/view.json | 570 + .../Equipment-Views/SS_Button/resource.json | 17 + .../Equipment-Views/SS_Button/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/SS_Button/view.json | 1104 + .../Equipment-Views/Status/resource.json | 16 + .../Equipment-Views/Status/view.json | 640 + .../StatusNonPowered/resource.json | 16 + .../StatusNonPowered/view.json | 580 + .../Equipment-Views/THEA/resource.json | 17 + .../Equipment-Views/THEA/thumbnail.png | Bin 0 -> 2033 bytes .../Equipment-Views/THEA/view.json | 631 + .../Equipment-Views/Test/resource.json | 17 + .../Equipment-Views/Test/thumbnail.png | Bin 0 -> 3442 bytes .../Equipment-Views/Test/view.json | 58 + .../Equipment-Views/Tipper/resource.json | 17 + .../Equipment-Views/Tipper/thumbnail.png | Bin 0 -> 74 bytes .../Equipment-Views/Tipper/view.json | 640 + .../Symbol-Icons-View/resource.json | 17 + .../Symbol-Icons-View/thumbnail.png | Bin 0 -> 51602 bytes .../Symbol-Icons-View/view.json | 280 + .../Symbol-Library-Views/Symbol/resource.json | 17 + .../Symbol-Library-Views/Symbol/thumbnail.png | Bin 0 -> 1536 bytes .../Symbol-Library-Views/Symbol/view.json | 155 + .../client-tags/data.bin | Bin 0 -> 346 bytes .../client-tags/resource.json | 16 + .../login-properties/data.bin | Bin 0 -> 288 bytes .../login-properties/resource.json | 16 + .../Reset_Start_JamReset/data.bin | Bin 0 -> 6127 bytes .../Reset_Start_JamReset/resource.json | 17 + .../StatusControl_Bar_Has_Role/resource.json | 17 + .../StatusControl_Bar_Has_Role/template.bin | Bin 0 -> 6641 bytes .../ignition/event-scripts/data.bin | Bin 0 -> 1200 bytes .../ignition/event-scripts/resource.json | 16 + .../named-query/GetActiveAlarms/query.sql | 62 + .../named-query/GetActiveAlarms/resource.json | 40 + .../query.sql | 33 + .../resource.json | 33 + .../ignition/named-query/GetAlarms/query.sql | 67 + .../named-query/GetAlarms/resource.json | 33 + .../named-query/GetAlarmsWithCount/query.sql | 63 + .../GetAlarmsWithCount/resource.json | 33 + .../GetHistoricalAlarms/data.bin | Bin 0 -> 1258 bytes .../GetHistoricalAlarms/resource.json | 16 + .../script-python/AWS/build_url/code.py | 99 + .../script-python/AWS/build_url/resource.json | 17 + .../script-python/AWS/build_url_http/code.py | 293 + .../AWS/build_url_http/resource.json | 17 + .../script-python/AWS/create_tags/code.py | 31 + .../AWS/create_tags/resource.json | 17 + .../script-python/AWS/credentials/code.py | 53 + .../AWS/credentials/resource.json | 17 + .../ignition/script-python/AWS/errors/code.py | 11 + .../script-python/AWS/errors/resource.json | 17 + .../script-python/AWS/heartbeat/code.py | 16 + .../script-python/AWS/heartbeat/resource.json | 17 + .../script-python/AWS/message_types/code.py | 302 + .../AWS/message_types/resource.json | 17 + .../ignition/script-python/AWS/s3/code.py | 879 + .../script-python/AWS/s3/resource.json | 17 + .../script-python/AWS/secrets_manager/code.py | 33 + .../AWS/secrets_manager/resource.json | 17 + .../script-python/AWS/wbsckt_abort/code.py | 54 + .../AWS/wbsckt_abort/resource.json | 17 + .../script-python/AWS/web_socket/code.py | 211 + .../AWS/web_socket/resource.json | 17 + .../script-python/AWS/web_socket_send/code.py | 21 + .../AWS/web_socket_send/resource.json | 16 + .../ignition/script-python/Alerts/code.py | 17 + .../script-python/Alerts/resource.json | 17 + .../script-python/Commands/analytics/code.py | 15 + .../Commands/analytics/resource.json | 17 + .../Commands/button_commands/code.py | 122 + .../Commands/button_commands/resource.json | 17 + .../Commands/shelve_alarms/code.py | 31 + .../Commands/shelve_alarms/resource.json | 17 + .../script-python/DocStringTemplate/code.py | 16 + .../DocStringTemplate/resource.json | 17 + .../FileHandler/downloader/code.py | 96 + .../FileHandler/downloader/resource.json | 17 + .../FileHandler/uploader/code.py | 64 + .../FileHandler/uploader/resource.json | 17 + .../Gateway/timer_scripts/code.py | 59 + .../Gateway/timer_scripts/resource.json | 17 + .../Latency/CreateLatencyTags/code.py | 53 + .../Latency/CreateLatencyTags/resource.json | 17 + .../Latency/LatencyAvgCalculation/code.py | 24 + .../LatencyAvgCalculation/resource.json | 17 + .../Latency/LatencyCalculation/code.py | 82 + .../Latency/LatencyCalculation/resource.json | 17 + .../Latency/WriteToDynamo/code.py | 77 + .../Latency/WriteToDynamo/resource.json | 17 + .../script-python/SymbolLibrary/code.py | 105 + .../script-python/SymbolLibrary/resource.json | 17 + .../Visualisation/home_page/code.py | 92 + .../Visualisation/home_page/resource.json | 17 + .../Visualisation/status/code.py | 162 + .../Visualisation/status/resource.json | 17 + .../Visualisation/status_2/code.py | 66 + .../Visualisation/status_2/resource.json | 17 + .../script-python/activityLog/logger/code.py | 83 + .../activityLog/logger/resource.json | 17 + .../activityLog/productMetrics/code.py | 223 + .../activityLog/productMetrics/resource.json | 17 + .../script-python/alarms/alarm_click/code.py | 47 + .../alarms/alarm_click/resource.json | 17 + .../script-python/alarms/alarm_count/code.py | 24 + .../alarms/alarm_count/resource.json | 17 + .../alarms/alarm_filters/code.py | 64 + .../alarms/alarm_filters/resource.json | 17 + .../script-python/alarms/alarm_state/code.py | 32 + .../alarms/alarm_state/resource.json | 17 + .../script-python/alarms/alarm_tables/code.py | 195 + .../alarms/alarm_tables/resource.json | 17 + .../script-python/alarms/shelve/code.py | 31 + .../script-python/alarms/shelve/resource.json | 17 + .../config/project_config/code.py | 168 + .../config/project_config/resource.json | 17 + .../ignition/script-python/helper/code.py | 284 + .../script-python/helper/resource.json | 17 + .../script-python/import_file/csv/code.py | 20 + .../import_file/csv/resource.json | 16 + .../script-python/loggerConfig/code.py | 34 + .../script-python/loggerConfig/resource.json | 17 + .../messaging/message_handler/code.py | 141 + .../messaging/message_handler/resource.json | 17 + .../navigation/additional_view/code.py | 20 + .../navigation/additional_view/resource.json | 16 + .../navigation/alarm_navigation/code.py | 79 + .../navigation/alarm_navigation/resource.json | 16 + .../navigation/amzl_navigation/code.py | 65 + .../navigation/amzl_navigation/resource.json | 17 + .../navigation/basic_navigation/code.py | 15 + .../navigation/basic_navigation/resource.json | 16 + .../navigation/navigate_to_page/code.py | 50 + .../navigation/navigate_to_page/resource.json | 17 + .../script-python/navigation/search/code.py | 44 + .../navigation/search/resource.json | 17 + .../navigation/show_alarms/code.py | 34 + .../navigation/show_alarms/resource.json | 16 + .../notifyTool/DeleteFromDynamo/code.py | 122 + .../notifyTool/DeleteFromDynamo/resource.json | 17 + .../notifyTool/ReadFromDynamo/code.py | 118 + .../notifyTool/ReadFromDynamo/resource.json | 17 + .../notifyTool/WriteToDynamo/code.py | 103 + .../notifyTool/WriteToDynamo/resource.json | 17 + .../script-python/row_builder/code.py | 32 + .../script-python/row_builder/resource.json | 17 + .../script-python/state/state_tables/code.py | 44 + .../state/state_tables/resource.json | 17 + .../script-python/tags/tag_utilities/code.py | 38 + .../tags/tag_utilities/resource.json | 17 + SCADA_PERSPECTIVE_PARENT_PROJECT/project.json | 7 + conversion-report.txt | 4 + tags.json | 46556 ++++++++++++++++ 753 files changed, 147759 insertions(+) create mode 100644 .gitignore create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/page-config/config.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/page-config/resource.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/session-props/props.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/session-props/resource.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/resource.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/thumbnail.png create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Inbound PH1/view.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png create mode 100644 CDW5_SCADA/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json create mode 100644 CDW5_SCADA/ignition/global-props/data.bin create mode 100644 CDW5_SCADA/ignition/global-props/resource.json create mode 100644 CDW5_SCADA/project.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/AMZL_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-permissions/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/props.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-props/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/session-scripts/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Critical/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Diagnostic/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/High/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Low/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Alt-Colours/Medium/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Critical/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Diagnostic/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/High/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Low/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Medium/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm-Black/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/NoAlarm/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alarms-Styles/Shelved/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButton/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertButtonSecondary/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertClose/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertMessage/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/alertTitle/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/error/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/errorBtn2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/info/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/infoBtn2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/success/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/successBtn2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warning/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Alerts/states/warningBtn2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Controller/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Grey-Background/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Background-Styles/Main-Background/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Button-Menu/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/Clear-Background/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Buttons/PB_1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/DeviceManager/DeviceManagerRows/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Connected/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Disconnects/Device-Disconnected/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Dropdown/DropDownBox/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopActivated101/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/EmergencyStop-Styles/EstopDeactivated100/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Bold_Text/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Card_transparent/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_error/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_info/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_off/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_success/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Data/value_warning/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Embedded_transparent/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Item_Border/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Label/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Row/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Title_transparent/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Card/Value/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Bold_Text/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Card/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Embedded/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Item_Border/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Label/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Row/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Title/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/Cards/Value/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Framework/ColorPicker/Container/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Clear/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Diagnostic/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-High/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Low/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse-Medium/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Highlight/Pulse/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Disabled/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Action_Button_Error/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Export_Button/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/General_Button/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Input/Button/Secondary_minimal/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Labels/Label_1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoButton/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/InfoLabel/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/PopUp-Styles/Information-Device/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/AAA-Style/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State0/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State3/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State4/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Alt-Background-Fill/State5/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State0/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State1_Alt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State2_Alt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State3_Alt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State4_Alt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State5_Alt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/Background-Fill/State6/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State0/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State1/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State101/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State102/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State103/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State104/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State105/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State106/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State2/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State201/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State202/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State203/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State204/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State205/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State3/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State4/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State5/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/State-Styles/State6/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-12pt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Ariel-Bold-White-12pt/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Controller/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text-Styles/Docked-Buttons/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/CenterAlign_with_Padding/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/InfoText/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/Label/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/LeftAlign_with_Padding/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/RightAlign_with_Padding/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/TitleText/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/style-classes/Text/labelText/style.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/stylesheet/stylesheet.css create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Additional-Home-View/MAP-Home/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/AlarmTable/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/Docked-Alarm/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/HistoricalAlarms/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alarm-Views/RealTime/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/alert/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Alerts/info-examples/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Detail/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Template/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Detailed-Views/Test/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint Embedded/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Breakpoint/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card (1)/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Card_Collapsible_Transparent_with_Anchor/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Card/Nested/Card_Collapsible_Transparent/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color Picker/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Framework/Color Picker/Color/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Header/Header/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/CommandControl/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/CT_Main/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Column/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Message/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Row/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/SequenceTester/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/Upload_files/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Commissioning Tool/UserFeedBack/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDetailedViewMapping/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/AddDevice/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/MainView/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/SideMenu/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Config-Tool/TagViewer/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/Device/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DeviceManager/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Device-Manager/DriverDropDown/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Help/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Home/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Monitron/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/Notify-Tool/Notify-Main/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/OilMonitoring/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/S3/manage/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/TempMonitoring/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Main-Views/ToolBox/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-South/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Docked-West/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Key/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavLabel/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/Nav_Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Navigation-Views/NavigationButton/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Command-Authenticate/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-EPC/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/DatabaseError/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Detail-View-Filter/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Device/Information-Device/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/EditItem/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Error/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-popup-view/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-row/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Legend_Popup/Legend-table/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup-Entry/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Popup/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Notify-Tool/Notify-Submit-Popup/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Permissions Error/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Audit/Log_Viewer/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/S3/Versions/Log_Viewer/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Search/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/UserInfo/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControl/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlActions/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlAlarms/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/CommandControlStatus/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Controller-Views/ControllerStatus/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Area_Nav_Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Camera/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/ControlCabinet/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/DeviceStatus/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Divert_Arm/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Extendo/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/JAM/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PressureSwitch/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_End/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/PullChord_Line_Vertical/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/SS_Button/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/StatusNonPowered/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/THEA/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Test/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Tipper/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol-Icons-View/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Symbol-Library-Views/Symbol/view.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/client-tags/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/login-properties/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/Reset_Start_JamReset/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.vision/templates/Site Specific/StatusControl_Bar_Has_Role/template.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/event-scripts/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/query.sql create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/query.sql create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetActiveAlarmsByLocationAndPriority/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/query.sql create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/query.sql create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/GetAlarmsWithCount/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/data.bin create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/named-query/StoredProcedures/GetHistoricalAlarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/build_url_http/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/create_tags/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/credentials/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/errors/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/heartbeat/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/message_types/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/s3/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/secrets_manager/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/wbsckt_abort/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/AWS/web_socket_send/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Alerts/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/analytics/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/button_commands/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Commands/shelve_alarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/DocStringTemplate/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/downloader/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/FileHandler/uploader/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Gateway/timer_scripts/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/CreateLatencyTags/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyAvgCalculation/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/LatencyCalculation/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Latency/WriteToDynamo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/SymbolLibrary/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/home_page/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/Visualisation/status_2/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/logger/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/activityLog/productMetrics/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_click/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_count/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_filters/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_state/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/alarm_tables/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/alarms/shelve/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/config/project_config/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/helper/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/import_file/csv/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/loggerConfig/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/messaging/message_handler/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/additional_view/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/alarm_navigation/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/amzl_navigation/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/basic_navigation/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/navigate_to_page/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/search/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/navigation/show_alarms/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/DeleteFromDynamo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/ReadFromDynamo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/notifyTool/WriteToDynamo/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/row_builder/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/state/state_tables/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/code.py create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/ignition/script-python/tags/tag_utilities/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/project.json create mode 100644 conversion-report.txt create mode 100644 tags.json 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 0000000000000000000000000000000000000000..09e38c8c4461dbdf0154ca8f4428f552ad699268 GIT binary patch literal 33113 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 L+GjFPTip9UmfA4W literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cad78555f67edd86926478eec97c09783fba8017 GIT binary patch literal 13334 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

mm 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 F{WmI;xmo}K literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9a384ad7fd4ce939e30e55811aedb19088cd6b4e GIT binary patch literal 5882 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d681fae2a571ed0748597520ebee15aaca75cb93 GIT binary patch literal 481 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 L|Nhs1p|AcAq%?QY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..eeb4b64f5ad777e02828176ed54fd13ef0293c71 GIT binary patch literal 2983 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%0DTjSnZK>5l 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f1f480bda8a22e084ceaf9df2126ec2b4f2d934f GIT binary patch literal 51842 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8fb4e8c1c81a3b2b772289f6581360dbaf735a40 GIT binary patch literal 5440 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..51622d7c64607afe5a8c2deedac36c4f0f66cf35 GIT binary patch literal 50184 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..783e7ff4a62fad2eab9fe2d4a79dc131cd9385a0 GIT binary patch literal 12867 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 G3H~4SCn;V4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5223a198fd718eff54c70fcb00fa0bdffb15796c GIT binary patch literal 2306 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π9Wy#T1L zoYm^@ZWU}-ttK0nzjBjAmaRCL1lP#~&OQHjCAR%m0dOZabNy*2hi;!)O>jXBAQ1hzYH4KFdz4Z!RGVM`LjAvm9* z(XPlz#TvCrU_~8BJ$x%l-ZtClQb!? z)NO%L1w32QSRh3j*vI2LC?|lG1?AXxj>m5cKqZG#vb?-ua$4&az~S@hB$Gh*H`}QR ztSXM-%%CZDj1zpAu)M^J<*gZp9r20Im)VI3EIOQ;zNHocMsJ(MdjGU}3AwkEu`ztu z!E_2Af-hE7Ua~PsKUSQdg%YeT$bNK+$U8jYqwgBfW;l2UnVWTXL?B_Y?9wi}bummA zrr;WI*#{G}HP>(6+z<<7HE*RlJp+M)*%+mw=c0`C{6i5fT*wAXHmS}7NANhoeNo9( zu;w1+cqY{f<#IU(rh_^Emva$RS|qH&qQZ<0m&q%k)F{|^**rT@M(vOKI{UDD=>d7k z74?~>j|fWgfB>N43Q|~RW(>x_qZ~gW@AaqHlU#7H`gN=92({nL6jyci*17$dWk)sg z(rin%iUWX$t+lzCT&*H}O{H(GsVO12l72a%Yx=2~1aOP4F2)TCxpYcm6d9~3@vJnp z3D4fo0PhOiWQUqp2Tfch?x;tz$+*#lb&el4{c@kBcb9RFj;utyTUPO$f!%te;cA3H zmNC2S$2oT~T^XD!%)?AeuXhF!D!RL`VHN?XYL$a;LrexGooX}unfig!>ALgc z^{Jwpey3^T1I>#b#`p1q1tZ>rOmhO!(U}_gYdzh{v{aS$d45pTV&G(29lt-eW;i%5 z`5@o==C;VPj9;Aa4U-PE#FpRb9-%P|?Qy01(@zk~d^EkbF&ZElsycZd%6q*E*NGLL z35-XW)t@zlb@6>_MgMs&y7nZ{aO=o>}@zptwQ?+pB^U^cDfqe=32o7 zfA7it+Y?~;FvUsscHYEj+sO3g`75UzITv0kv~IZDNgS6rdcBnOKiTdbtPn8?)WU67 z2!s^cezmSXVgfZa9PdLh*8BEdM+q#Je~PxwbJ2x?uT*54;(i4oIYY~!HF1CiYE(NR$e2^CAl=8 z*E}9YeE+)GKYLYM8b673oCm4wNg_3;i$f>aKW`&qNZPSGrp)XYHDs){TdG(=DriQS z<=*MB@6(GB-#NGa?atJ=! zX_uo-V+#&dxZ4)#+{FEBZR_RQ9pIYi6&)10*9d+=l;SCdgWUeiR^=XBh-yFt1U&=3 zn-sv?8Ik;w=H$Uh0b|1rSd Z_p6;HJ$cVmfn%IRPup0lM#CZUe*i@}AwvKF literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1b9f7ec361ea4fadb8d2b30f0253b5828e42935c GIT binary patch literal 12852 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 Rm-&l54>>#@aiaFgb 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..67a28121cfa67cda0cd66ad9fa6c7e2fde3a7cba GIT binary patch literal 10667 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 JRtp;h{12kNi(vo& literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..57700fd7d9dce219005a9e2c444b8336ad33624c GIT binary patch literal 11197 zcmaKSWl$Y3v*-beyE~=0ySucwyA>;PaCdhp?i6>I!oeL1l!LpwI~-hl`DWgC=gs@^ zvXf+!&1AC4Zg#ViC>14XR3suK004k0EAv(DqjvttjR?>m~!s+NYyo0(l5EV6uHM=+#fW8BGNsdQGVBSElr5q^2%cR z!2fQF%@|OZMv1@&ZwDz_9n+ER9{7zOu3c&1X_U2xJW5hhGGs3JD>^#*!@~n*6e%g``A5^k z-F;zkaTMi11(_o&Jv}`siGs5=K`&wX&!0aT85xHQ49*@A0|S34NeJ>C--S9|5pzXQ zk&#Vw37MEnRMenb>_U!@*|>0|r1~QfkhZtKBKUY?sa6yfk(5P708n6RwEhdI*0EWP z-wxlTWtoph=s#GK<+C$9LGi&jdIRz77n zmmCWRn~-C`_g`pw;G+2HDULrsN?ngucDoIapZt;D{AMOuWHtqp`{hv6DymQcz;8OY6*$!Xnl$BR(6+3t38u|9dZ zmUuXHzG}4A!RxpWE*MZ8ud!2Pu7Qx)+gn-Lh^nZk|4K~#O-<|P(kx_^shg?W=3pxm z^{Y`#h?kv5L_9a6HO%FJ83`>uhizopBKq{t2n$3PjwRa?Qr)1 zwx=DQ6}6vn0EeY$;}rjDz@;7pZNCZIqN!HC1m$racC4RYCyIg;9z=lz)o6TWd$dEKK-!d+Y0QF!q*9=GA?9{8UhOct4VSxj65)G<7BJ*F^y|zuA7+ z6x_JE_?_$Vp_OkQ@&1n+tF)W86|0HrJ&Zlw9Ll*NsconoEfw$10G1w0TY)Ze;z7A;fCN8C`J`lp_{FkZeiGo3Ykkc5$kO}obn znfbS(d7O>v=WWk%j|c{PJMVM%A+Y{2j(u6(Bg2oo7Ar=R8M%zYuMnh+X1H3JPzrsz zh6oBl>aze`-AzoV-XT<3DG7N8nio2NA^@af1(#16NCcRHT0#+{No595!Km=g5{f*N z`11k+T4na3Ung-N$6p-tF$|d^@JGv2`sG)*%Z{&P5QK=J;=|PuLxu}Yvf$Uywv;qA zpmm@w?4UNy=plD_S9UxEa&U@K`F8BUf|*VN5GxcnvY0j7Uj(RQ4Gzl?DhEe$FM-e& zsw<9A?Fxe+M}q!F3@x!%cwN7Xty4P)54i2 zj`P19)lP`awApE&#Ycp(68GWWf!unWUT0DrG@J?m`p@1g8b?Y^%)MI+ zqSjU@P|v6Kv|uF$QhD)*(R>s3zeq4`+vE{)hE&YLfH~TZqVg2-c*j7n7XqueCsDry z!YDaYi5m1a55nx1?3($?{{nxF!3H9Vt8xBMIa;_l<9tk*Wr8FG=Zd}4Sq`=-3^w)W z8}8Rr!{e4WjpyP`ql66+>L*Yj-{k|YI(seBv1{M;&`dq zKs`N-a{0_C`MS68hn*RJ2EW!@Xcplxc_c?!L>Br|wNQC5^$Zt1O8T8Xb7yAf;YrJk zN>7t}DZZ~Ox<4;M06{6or++uFuLmR~<$?GfeLqt*+*DwNypl)oJT%mV5N2pQue|8qm&V=*3Z&1G zz0wqp6c}gs&@Y|6h72#hK*6qQ6Yi(?_3+Dxs*BC?QnkB*@n4rL+G_&WE9c3K4ytW_ z&V$;Q)$h-9V0dB1fM?@<<zF78b8}N_*X^WxN~a< z?apU=+~4SVa5^K28)E(~NmBm=`6=#=rqhnZq>pM?3IP+XAlC(hW=4b`h&TRqS04Iv zr&i{Ew)XC>I%>Pqn>5V0)=9ZnDGM(@x3l$@c|MIv)_IN`4 zt^1W|?H$j63|etKzlIb9QU%(>o|ER6;uTv2#xRrnafZb(B_yFRoRk^`ws>#vi+F10 z8hY+SlZYTrS`0+jIBG*xr_iEbFopXh8^?*pVDv5NvPtEV6Obb98sww%%Pp#sfJFE4 z03Io=sJ)8-1M2uSo;!F41_0sS7bbK8|Kz~kATcf?$|fS+$X!o05+VOjQ)-z;WPt@X zTh9p;10h>Cr(6AjO49HP>x!o*g;UG2g3h08Y>W5JW+68~uQnXWjawrJu;WyiMIIjh zY6E%3-wUqTFTDhRQbrk978zVZZ9Ze_C0FuowPZhY2E-;S1EQjk!(ve`rcz*vx=-_* zq5>oz<(DA&!-2%bh_y@+j@AGmWPv}CjalJts>j8NAxcDPk^>Mc9WvN1Xkn)0gJle% zPt?kwA?)es-DoF<-EB!WAr$*HmAz*-#~YefPfSotNG;39QVWV;Ts=a<;Sy3|on6G0 z(8AV)Rt{Y2t2W-SNJLnV%M7te`Oqhgg42}-X2a_1QPNcFqSDfOlk6Pz1r*T33KH3p zycM}9NWzDE36zhbB-Et8gTO35H&k{60K8DGGE(M?O9E0{u1d=A7k7nyn?;&c{|hjB zPim3EL+l`pgTsiWEjAus$;5)wrP!>cUP~Pt_=V}%CJ$BM=^uf3V|e1<yIkeG+r`v$DCil}Qo!m|^z`Yr^2wzUvIB)B z)2cIcUKAyXrWH&2CyL3Y85;P^snbt{vxHQa0`zR5$7{W=aBNd@XacJhpv2vY5P~Iz zIKf7`Dd$^pBA!N;JtUS?tEQNrme@fRG6l3N?7Y_4P^Hqe)#U~Fcb zINp%t^ZYJ2TSfT6EOAwuupMS{Q9_b(w`b@Lf?$||t3n~ktA6||Fu!LhG~PwsmK#>9gdfF~QfaO&mUCxUulQ+9_FfiT%X#%a#ooV}!sTfKHfRM22A~K3O=3 z79bjmu278ei|Inu_#v8FT6VkY=3geEjdvTm_OQuzudV))<^L*q<*&rIlZ z+|O6R4||~fJK+a$HS1qdiBUGM{Tv84PC5YkJ#ifr6Rgm8jA-)gZ`26=DhS_G2J~}9 z2?|j|O0}jIp!8Pgxmtqml~mNx)f&a5&}1e{6B6OoW=gfWHrfHK4{F1fephm=B;A0? z+)&(Q$3?A^$7;aEScuP06D6#etBBteCy%yxF=)X~1yjRe2v*!R4JbG>n{?OQfX$?W z4XRl=kDqz^h}UYbs)T>`>BAn~BP}I_P>zSKY1RIe}h1X8k zqSJE-$-KM@oc9A3ro~UC1{#!*a!8jF?e%`ZFw_1_iw`&Fha44(>ua?SUp)7XCT#=_ zzu{9sZc$}e4AZg&DCz0?<-ylG97x|vJfGZ!n6c3j2Pg}#ujr6W5d|p(!b64g|*9?r|t9TOC-Y%%?1dMxo3zG;`^Ue@(*CH#+M*S^u&nzPiPP;mgVw&!i z0c#yI>Y{STCh^E6u^hg7HK89Hax_K=FoQ`bg}^E1??Uac?3H0H!PDPLctZ6jV^~PG zrhc$m_GLx*Ds1NQtg5areKUA@1iZiGTf7(H}0uWD~QTiXwrtn3%tEW0_s@QTZWhsyt^Axv;pW*#74~N_;1W= z*F4du$)^0e(=-+885=_6c6so7uy6*W|p-E%r5 zas6QfZm%64`Lp|J`TWU-H;1mr`Enz6+ccaVeHr8G2Ao()9)_Jn8M^t%LU+|2vs<^T ze!*|`;X3XUwU+j3I=UgC+y!q)O)a7PLJy(wLJJyT&MzU-pbgp6NN7j2O`=6Du7NqN zT&r><`FB3;&~x}0Zv#clV{dxR*PI;uXQ$}*Z&FjIG9f3I_Q9PrW@6EBQHe+H(0>tN zUJQTq?L!Q*uq!)+cy)fbZ9$CYgpe>_XIFA%7XDxvnjc!iqR|1b4%Y$nS4KOZ|4F}! zZbtWzVxardbbG4$isvHlAm>Gi3evt8ORh~bUz}ihfM-b;*BR`e%tnW!p?GRxsT}0E z*-XMh!;IPl9FLvmmJe|!v#fu6*IMoq7PxuKrUhLjji)D$ZPnNiRHX@C6(e|0Y zKAzv`u6pazetAhD*Ul9UxC<6|o+9&eR&vRgGNzmy3m(Cpx>cMDBFs1#r(X+>ECf{i};91vx8>C#s`w0wU;@c-)g|R#rrLIfeX4vJF(nuuy|%h~K!UBeg*P zj+XLHIA%@28dqh=;U*hF6gV$nhgB#aJn6})uZvTELYY;p(mX}tEys2$ zRy8xV=J*OF3Cf>MxJ{{J!}~E1rQ=5;7|2AKi>$t#hNT&B$`9V1h;gg>sdLwrj&Uwp zI>BPw((<>pEB_KuRAsd8FZF~QnlR!LbxQ2WN=D3@lr~`miG5*0R#yLs=nA(=d3!fD zra9z_m**)z$m@w$qdZzpEFG;^11#x{88CC?%T9dzOv)**fjuuhxr0=L)535Qb2rX3 zE$dd=5-@cplb5ezG;JHLwI?$f`TKfmb@=q&fv#5g=AFIg*gc$v=?7l=gcT=D+ghY+aRNS*D_fp8;wqj3AAMdZn?*l$IHuzC6t^{dS$Pbsb zm6cY4ZpM=ql-NT{P2gYhjiKf?hl8&j&COu;-WoIM7i6gSiR5#)Ghq*|rl_}9(z2yO zy&`MsofI2$o1A5fmR*v5-wVAyl*9_{&&D5j94QL6&)Nb>%$`^Nma(^1-GX4@wQB-QT2|vCdEdN3H!%-<5}lC+_o~Mra#O& z4+}o)_wM(M9yup`8D*9-pF6Y~jxa=F5CB!Khlc6Eo|&NwSpRMbG&W~6zNzIekUOp) z*tk-&44^$Wf>Nk!V4mH0YqN`Cio*dnB*6rc2K#PgA^4K{Tftn)!G1 zcRc%+=QBj-SUgJ?XN?oUMkV259lMx2+ETJ+85?)Sn!7AqIjK{wc|CR*Z||3pen-*o zFZCWGUYi5{dP=)5{5DwQq^0}{&R22cz7GmzIW_CxoU#pD7Aey3-!{}Q`n^=oVL2TP z$uVrkW)if#Sr^rpC{71SZX{JF`UW+CX;zi8R5qKw?dx%hG`+)4^Ck;)haEGt_0R!R zM&1A_TTrT{AnrV9Lf8WDzOcR7dF(DzfhB^NPtZCkdGwPH{GMxJNKv7dq=3&zT9TV; zK|5Db=-4{_XptAEBqOoD$Na)!X-}U;Rvklag@9vzp|>)4NPEgFhF7abpqM`G`^Nh{ za|Q82jXw6tWsmdj!T4aw=;4druP2AU;1xBETe))4*aQX}#yKFhxFxP>1R)Abo{(b{fOQv1a0)sKD7AKi-ggnOt;5`3UP>wIBsPz zgbD)6k?kzcG)z<&ckojx!&9N+mN!!);K)JkmZ~DF5}YRDNQxFaoSL4?ns%fVuoem~fU| zQsAehRI7Sr6f`m_C7}@KT<-}H!70(S;*vydV4dZky$n5iU&62D&dc6XOoh`J2)C%Q zcZy3y(_m_JB%6*AP9fjhJ5(I%*xwoYIup0|>R$7ymNZ=Kzpv1Zw)QP-3jNu}sk4z{ zV?zBgqu$AQ;C!nBmqMw3V%eSB$u_1~VzT#{A)T+~oSoAuplA0S4Yu9jwRh;=R9i$I zN+Bx}Dg+IxHx{c0H5CDs45;!Hc^fk^lOJcYbu>Q=iI{;0n@h&Y4mP<&4*F&<29DFD zq%oVbwT0CW zm6hho3$~Dtnrr3LEX>L-bl#*g9CQrl)5bT*Ccqg-YG#mB2PU69$=mn`0qXH_2=hmlfwYR8udeg&f7S57sw6qQ~`Yr5!?o&8r z$566af)LI_VghH*#wd9!AqEGb=IaA$PIMNXlOf7ZM2DfXdrDo&W;I7H(Gg473dU zWgj$q`Y{Hkzq>PpU(-iZY(ISxYM-+6Sd~sS9~Bnrr0sZt4I8%5)_RX^!n#t_J-{Bo z@5CTG8a26|^Y}hpV8>AJn%TIwFB9OvSap2O$`YT4ZE8Jaj;tXR#DXHVhw z_Ms`;7;JXUWbuiLNmpo`XmBt29fp03le@_U1$X%8AqyHdtRe)5+5aik*r=|jO-mhz zRiaRNV5`zYE*K}DEGg)>Nb*lpy~$pg$&7J!&1q9d>GlT$fdb`7J#?PUU|Nt^5&u~4 zCvL(N5kjklzzk}jY3~-BE{VeC--MBu4jXP-@8dsV?(@NP86(z(7t^0bzqvQ>fx|^9 zZ6bYCE1%o&_O^n3&7BPb$zB8U@9HA8s-&i@=MnU3h{UTjDgPh0@Ba{q7At*qy{ljQ zxKnzle$7{olM)1g+F+t>{t2zD1zj(KXAjWmY~F-D0z0SVC#(teGp;_!NP1CX#3Q6^ zJjRZRrg&LD#)wv-=w?p@PRt4dj4#Ag&R+j`A+k>7?iX1a6FgqNj_n~(!s#0;!LjnQ z%kzARl2#g0^AE9{eg?&~I~AADTi>^UN%@@W4^sC!ci*~Lqe~|?*57^`fv;V zel+m8<`Qa?vlTZI+SY!_8PIyBkzQnYITU60AZPW(Tgk+Yz1-^}60rF(zcJHF_>-r& zi>#!o?DH?ZdVxQip_dI-t3j3RL$Ou(H?2%)cLXGwRn={;5&LLI#GH#~m)`%zFZ$m| zFLU^L=2J*B*EQO>1*n?Z3to+Y==h|*oT36;R9>6E2ViHR@$=d}>9zKXhcW)%CEaeO!$VGI zZz`?PrCz)VIotL+CoJclmB&bpi<`5TZdT+`g7#N(F3*|2W2P;uGzzmg?r#(+T1lK* zDf;m`QwCG0-8XBS>#r!~9vs_SQLAJSb5t$_m|X;7hBT5lwRU$G0G0jxcF8P>b1xxl zV|QO{PXkSH22*`TZHSDnAJ`7s>^EjxtL~@b*4t)D+FWbHUOPjlLGLau@H*v1;2%z& za8f96%71qp6_-j$L?#m^B+C5#DB*HgzY0Ua{D3=o{>8?})ZGU8WZtAl|Lq*E@UI>5 zx6@5}kH8FL<$GCaXL$dAwCv;IDSQy++)AjWM&SGbT1;k{UQ-*)ZZwaF7^R*fV&lph z)Ziq$A01f!5`-80hpT3a)Ag@joy$ByN*dzG=72y984XPmK$G;&= zjd$hs598O5N$G0eZelDi0wZ`l0z=EjNmXi6GX@|&&%HX^Rxa=wl2r{&3E@49U;LY(q6$%Bm^KQnvGHu?umOd7|=6x%HJVyG!PM>d`P zAiFhxc4^g{rdE;n{8#SKn?#t4>`CaYn|_V#qy0U|k41C7WoiTbs1fzP0I)wqj$?Tb za%Ddkdr#iSkT&^v;PGWNq7abynfm7k4jvG(^ZnT*H-G0DG;)i%``G$UsZmn4MeaRI zp4{cc>ltkL45$GsO=}a`?`|UtW)D;4uU!!j^9wA|S+KXBiFFni6@s9m2G`1_is9&6 z@OsnWd~AmY4!;73&8%{k!G>j+*~2)P$;0@C-{h5ZA8qO4s7XB!nQh^@VJ#@C=m0H0 zB)v!)9eDQW>Aq!#jVyh=Q{u8~(YRFm5|7GjZ}h`_TWiCa$Kk^v4>-KN1$jNfx%<1a zurL`*zR}Kqs|!ox@^b|l@J;(KM&h!svotqnL5Jt7pW{qX4SZ(w|Q>$-&c7&|a1rk;+3gouIG^f5bBS(F3GnpZnumVi4 z->|o=0~-YXUI7itF^SPpboJkCw?FzyikFtKSBy=c5ji zOZk;^Ou1bq5@*Yb{Bmq9p7nLE4z#+wTFnpzk}aD_q6tSqOCJA-HT;IPI9gLu z5~6?@p_&DR1dif+ER6t912=^YeR?>z1uQnTf9D7>( z8r1R`{_-6DGTo_cF5`4n>Yb*!pscH^G|OgU*56dKx&;XOOU;LZvJZUN2%rR`c9vj1 zW=(16vePK(6=d-MO=apoTAlk`1eq)vC!Ipr+xqq~1o6Xu{1X2_=->G;jX&94^lp;= zU*U-V+NHTlq4s}9d+6RxyMJa|W>XfNGK2Z!$~$ZMF4$V31*FBa`E`#bZw||h<0$_* zSh!$y*fL~un4fT!SxqR-Z4!{+4>=(n@D*O9=X+5$W=Xww-?(CUfKc z?z2fPYdW2BKBk2oV9Nu5ZIv=rXta(08jrr8JRc3{x?yyT;qnP6p_cn@7G5lbRu&+> z)Kx9Wby7RoC=7bY`2UW++s~8v+(VzSs{^Xw3JX<%ozBuLHxGMdh(U0e-pXKTwAfs^ySp@X?EA1}=T`GVq@Qe< z^TTwvq1$+~b{*b@W8qgrD-DUrx2m%YZjX!{g3H9K;HHG*@19pvL);r1BF#`H@XB3X z3TLOs7YCRu_WU!)=ck7}%Z3Kij%-%3=uQ3AOPv$7ZyO@r_Dbrx`X7(6u!(Xs^)kPw z{dBB`ztUA_dHM}5D!n2;>Q}{>jx@wUleRyVS3kGY*14HcSV+Dst0X3WSzVi1nF-`? z>wF6tTRhZNj2FD0J_alXo=0qCkzysfUCpI&BUi8OYzn+7iQTT1z7y+j>TvY=H<*IJ zdeQivk>&jR)f{Q6{rcu@e?V029xf>lR;wJE$pU+cN{a zHc)k?uHfZ0xaxDUW9`RjLPuYoEf)=v5(`;ubKup6C<~~o3E!Dw3~i;h3aW{Lm}8n*0@Aa@-ULg zuwJN_?u%m?7d$R$e;4ef`U*IgZSeFI^E`Hn$O7>H`Q_w&4gXqvE}GfG(+9SDUoG22 z#bOnCeE$s$h=W>{6KAy29QL(X3Yw_3b9)g`0>OGIB5rJ`kVB~4HI8N-3r7;gg|dlo zI(jTRZ2wVu@E*c?(P=p5<*0W!Bv<#};5J~^r`#!vJ|8hb9tno?1ineAf(qf~4Sh!f zYoCW&<)jMTDw97)FJ%9~yIEAWepf1>6;t?Ad_$^*r#1iCzS7=WpJ#D=j?-8F`)YT1 zTCwJ}6dd+Uv<-9@=~Hf^+3HHe_Pow6B4^`6%2TUzEI(fKv|RT4^uIRwG?wV7IA8WY zQm=bYVYjvx;uD7BtDGdr45?z2Qt};F{2lS)Uja={?NT}ovB_UTKSqY`Sh0kezJLE_ zGN~n{r27Y5vyt-0fsprC5DZdDQ6n-c#*piGsf!f1LECfxKAe`1h#Rh;&R({!y5x`W zj{vNhOQyk>tbuRBP29h-Cj2JVz2Fte?gUxPd5tRqvS^ugr z+npVJk$nWN4 X$=o}zRrv8O7a;ph>1(Zoaq#~D$e8i7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6d8b80b38682f6c50027566e5bf1754893d9b3b0 GIT binary patch literal 2604 zcmV+{3e)w8P)Hy**CSbq1wRrHO8p%(JU6$;!woyU9bRV{X31_0&99}#)= zRV4Q9L;S-J5&!5Te`3dy4YEZx$u^y%;=CkQpSo!xwtYJmdU_Dwv!~KtHPJct?nU(V z*KzHhd-!@&*IZ4@xeuwD3V1W5q*hWTFy!+nFrB>?#iygQICOpv!AOGnd!3iD*m6Fb z$FYeRe!4Qpm$Xg!V*l_=0{^}o!>%(?oSKZHkjo)Qc9~|%l>~!S$0SDacxu(-I$p(DYtgnZbOU|747V36vV+|dF# z@Ki>Do=M=_t7)8IU_ccxEG1pH!LYEffOI;IY&Khp8YCF%$cH@%hP5jR2C0t83x;Gm z12wgPzAMS5z;IxqfVsIjq*6D&PLg1#BOmr87}l;N7^FHTHyCJSpJXHaVsaiwFDIG< zL#TjQEQVwb-IF)3X-x==v7an zV4%oAz<}1N=hHG)h;awnYA^_!-u!ln&P9oqbgiaIpY4{nEz9D0YO5Wf4|^prP=r8Y zfY;dd>7%2-{rAIq^G#^1{xwm5s}Kw;-Tv*AVbGU;){>&B%JU+;cGc`e42B2CO}M?0p1| zRRjjnz9O}{ojW1n^yyyeiBiL0@E+`yx8q1jEv0H;&{)LKcR7K9ICV;uf(8x(Aw^a2 z_VnBMa{f#H0KXf47k38l#INaJ*?tBM)Bap_F6ti)Zl^#U$-PedMdzW^%I99#rF9W0 zc$0vGMg0!`9iYzpEscil{_7_K;b35Ost*mpIC2C=e?QDGz5pJ79LCY3u(of9wQCoT zBDgIUQM3XKR0k%zW{N}%lldO^ejoQyP1WkZ`L^zC^igXdEBAt(B+@m1PC#mbvqzsA0Jd zkpAn)G;J{WdNsxBG2YwDoxQbnE3kPpj}-9WgTP~t!FuT>U?Yp-2p(jM>YdepYrsI! zq{+cxT4r0oAO-{O)NFeT2z&EaN+Mbi+u}L%UQ@$hAc-$J>dAYIlvF*r!JsHvDCso5 zyD)`a10ftZy@1{4`mjFuTdW(o1-FjgiokFHfinTzJaRL-!`cuf4|ML3!4N3&@-}ftd{( zD$l`TXK^5qqqN9rI?hpmf$~-Y3?y=v!nZ9MEjT`s%Gt7`nsPhPb=!4aY7eom1Zq3a zcKpuys4g5^1}*tHs+_+8d40B!NCFO&*AN&;0p!xQ0|Q>?0ullYe4qW5nP@M&Jq(`5Vd3~xiVSF5*rsxpB_fE*>!_z% z&o(6iH7X~;Ak|U1!Qh@_`1@EC--lI9D>K*;{ylC#cRTL7a2FmPf0)C8V9_(%!{;7& z&!<5Tld@>GbdI5sMCH9UnpHc%ARLRqN5CrthVE|rv(;B#;jfykr=Ehvps;K(P@ZnT zez6^Fd%-|$N_FBLS=Sv1&^1*=4AwFu1~(X}44sqqiReQ_5fnMtby9I1byV%z#l3m+ z8Uh1v2u~$>C2mwos!@5tKwl-Pi5UMX=_LQ#ZJM?Oo}PFb&t86(JO9sOpJDyzdK`=% zf)cP>izvZLZHcK{o+NKY(MV3 zm(MZKWHh}}vVQ&*n|X literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..60e320df15cf9129492bbcfc60f41a4dc0c5ad48 GIT binary patch literal 35668 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≷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 P00000NkvXXu0mjf`5eR! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7396f4bb98fa7f3048f09dec6468a7ef5d76e7e0 GIT binary patch literal 4590 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 Y4{Ug>5Q>lTh5!Hn07*qoM6N<$f-McZu>b%7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..770e284ab26de0463ca70c61daf11d017c31bf5c GIT binary patch literal 21061 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 A!~g&Q literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..176953c05266b0e54936ce1a4bb26b211cb2bf14 GIT binary patch literal 773 zcmV+g1N!`lP)6+PV{0F5MZp%<^A)Nhrici#CBPaiyS!nq4iBq(za1wTPgx5e895 z$GnGmX_)3-?zOmr=J_p#$H$j}IcJ{tyt5|DvZ5%jgb+f=S3#7#yu1vDL)67$v0N_W zdU<)Ns_Ggt=JfQmTCLVPVt)85mlu9KRxISWxxJdU$y7dcBoO1@b~kDE#*J2DPC%{uM5a-bFTklEvhAzfkx4eVCh0 zr?0QC;i-9Q)Q?-}Xk}vt4~+Nz_V#vjb8~%t-RX1&gTZdMi#WmaiipM){eyL^gBmA{jg1ZC&@C2>^aGl>qVw@)e5Qd6T5>qDbu%a;|5JLETK77!i zczk?}Mx%j1Ae+s~vb?jib8v8wN~My?q|Ih46be|+q*)f=6khj6qk;Vn#rgR;+{9^m zcXxMtd;8+z0;aoMuDiRtt*tFAKnDe;=;-L^hYsFgxFT7=_>O z$GIGvCo%$?WW8R;0yLY=CI%-Q4#Qb^jV99NFER5ApqTD{%-j)x00000NkvXXu0mjf DV(NCn literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5dc400d35ae36e1aeab9fe54c60b0fc4e8a2063c GIT binary patch literal 18826 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f46bd052d31a32d88c5087f1f651770f498dc15d GIT binary patch literal 325 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..89ac8e150be975714b6c122bca8707073e5be2b1 GIT binary patch literal 2798 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 z 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 V0u*x-#Q)&D_#_RIDwi}2_&@%|X<`5X literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..235ed32b5fd3d5a6e8b4378562783e7b00b4bb6a GIT binary patch literal 14217 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

ky63OC?$Np=Hn+sYt6BNgep?>Xw=>tS==+ z$54Vn4!57*zp@svd?;ez3zFo*7zewRXiY;uT-&8;4Y#BuHZt!c%714s8{INj+(RaZ zr?V1b=e=8N-&$j6n^<0TJYR@-q51{SvVPCE!}vboBDl2sj!2q-Scpj$cc{VH@Y-z&YA^c8CrVC7- zq@Bhx@HywgO{5ud)vhxM^;X4_`V@n(`7Ma+^Y^?;50nyNPqJ_^7mU*`Y}>7k5FP_< zd)`?W8ZW=F+_#s4Ho z({zH97fU;Ctj^(ap?reiixQU*6>g3^e!z;!yz|}XwMm@j)hIJuiDV>ZGX9>hQsQAdiy_tTTuMdcLj&vixW5oqd(&b6c4-05r+pv<<@U52Ow+ zVNH=lz~?>xm$fY_VPQiq7=G6S6f&Y);@l!IhoRLizZ*!-uRFL)@uZyd3bny?HmE`VvXzg^9d;QJ4<909D^Kh=<@wR`d?lT26C`Y%}`$hZo zD<{kDlcnbF4R&DI82Lbn)FdMl-y%k$W#TI2kD^v!E7uDK_CZhy_Y0AaUN3M;ATqt2 zG9r5T2fmQOjjh1*JhJD@c^atyQV2rc8J+2Ze7j(7hCYUUbF{(MiHc%$1o8*4Q`10N zDy_~|ABK#5K=B$XuiZa3eo`mltO2^BDf|192HsBC(&A-LHTvR?Q*Gm;ht=}0&$_=L zw4(j021}*ldSybeoAQ;kg{{ZzM>r6#g<=H4m@RoBk4+s9uxKqg7$lE}&XxXx?8Yoy zKD(RLVvI3BSlGI54G1hu0=oe?F~aXECwjqGisBeKg4qz@G^hFR8oz(Hpja{2!9}N`g#cFcpcGs`bWbvCi#J) zbGw7qgFIhPJuao4)W|jg``RS8%3(`~HNdj?b=6F7$SJ`t>`r|z&-=6oYKl%M@a;HQ z`>2ozLylxVaCyfW^h^~}yHA3iM}re1GN?nWxn6{nd4Zl6i6t1h$cN*dse@ zsXxOk>pmaBGS(zKSaFTcN$WKQ5Hbn-SWwW=mQov>p(+M{aDx9@#!5b#3HV{cTdUCO zs?+B7cdvV}8m#<4nmv4dTTtE(?(Z6z{3|NGMIRK`5y^uNUj}S!{zAbIq9S{G7Y6Ft zkhxbql0um@)cTz>o^iWi9Nu?DE(zTS(K_M#x1I|WhgE=jOyj9_5Cbra5AXu3{kGZl z##^AqGVVOzL?FCZbrYR-=(|4p4JnG+&~(2G#%3EZ997HqMGcdSsmQ@`cV9v1^&w;W zJo{C;BB~EYW4}#2UajQrzMywTJqyY900~sT{x3cxb&kg!8*H&yOr%9PTa4Z@|#D$y+3UF(Tap83X zC4@XFB5z;B2>bM0vh&wTreA$UsVOaoU6>C?{68TAf1^Yfoy31pP@H7$ix$%M{?VUe zjx|cV`||WuCczr~Mwb`Ux`CDRjGsGS#zM-FPAFAQ}O`K4jbhLVT60Mkw>!C3PFrH*mO)RKEKH>yPJr} zocD(sMYycit~WD1f!P!ErI+IFkBB7K%IXhlMxZ`o$Ljt?eY)wzCG;9)q41*Lq;Ihq z%a12Fo^C+*`8$-n>D{<^!5BX&-K(7@`w{DUp{?UlmX?dv*nxT$;M?u?_KR-p;Y#d! z1dx|7HLUXYH?3xOW_Qv%$;%O54rqPQx@)(%g*}}d@C|fbp7Lmw3;!%tlITB*8xEbE z(w?^cuyUi-xMF(nju(yZ3XDexpiB)`Tn1RBQCgT2oR>?OxwF`~%wiDQPfYwFxa9dn zP2MOuy6k%NMW<~I1B)P(>}#mAGNmQ-^cRY!0>r{kp}+I1kY&@>RW~Wi{IJ+nXG;uE z%3}qz-6%P(<*MB3Z>lZ5U`3)tDi}W}Xlq5)*r9(DG<^S&tN~GY*SaTH2x+752I~?n z=X{w%{~D;TB$*Om*Aik#8m|eR0>-U|IKiO^=^&u%FJds-DL+Hb&VaZQ>bW7TOAbwy zC=&E%JavS15U};}{-BZn(Tnc?`x)rCTq|mCx|pV2F#D$w&{bvLSkC_k`CIaVyG44= zF`Ok{kt|zu_qYisr-Fid>*TDNMKt)!dueJe$43Nf=p-drf{pF6+!(`yR9I$!A-4(+1cTX?yyY5(@7dimei2C??T|k1n^q)z->@H7E?r+W0hu_wvLD1k z$GR_2aZuySO3^4O$xBK}!V*PsIPcvAU!lf|pQe102$!U0|AZv_^+_fQLDJW~>jdtr z;7YjsaNO>ZHEUtYJO%4o5TiK6Y@eU%0>jsShC+$#exW5+48q*dxJmB$h30ZkrxI8Z zHsZi@guf~lVsc*!{lZtE4{X=^LD?IskN1a(<;2yM$&1H;+rY+KaS3sq8u`!eLL z|Gl); zU@@cHeX1Xa%9VWBhwY&;mwU<>skt@YkKD)A+hX&+dQTVLoUn|((jgR!wB1(!?CZ)_ zJ3^1ACa&*pJ^SKP7$*z=POe5wTb8=S5MJq9;hk5|64}|!#K4{rv%6mtwsp}W$>97W zmMcYC5yuLKc9D5g9Xg&-E38NY8Izkv$})LQ(fH8E3RaZx6TJi>8auHX-Ai~AyQtYp zF45_`oh!ooR<%rvqOLEJ5cnv)D63ZlMz%DcVt~;ns+Zp}s+@TIxLJArIBx$ZDF?w<-&Z(3zurR-?E%mtYGP91v zz16As!b;c#XJLiWd1!E!s93on=#*Nig&GGi9<4}(y^xF%%Svl1q#Q&WqkL{^4kr-; zD5xkTv(=c0vNb{yZpA`~LI^`F3Azavy+ju!E%3@0k5R*(w5nNJf|TF}%<4qmTKQ|? zz-Xfr^Bbblgt!ivo}-i9fj=(BszcQc98Rpf@OVdV!PcsAv|e&$hGb(8?a8>fanEz1 zLwjiX>B%091HFc|_s5PNb?i(h54l{+L#L?@_jD3R(a`eqt*uiDj0l@Nd*M>_pO+S* zdPT{>Goi82IPixqC*W-Z=I(IOiR-Pbj7i$|Td*qtb?FSybriiw5=n9o<?O5?1F?3$X!wn-O0wtvbi!WU`5fwHQgCwJJWg^Y+L;cvMgcDIpDv<*pq0YO(WwkjN`Mh!NFc|jYAO~M9J62DKfjH};iPgOFOVgkj zX-@6KmXt(F=e3E8=XaHK*dwWC?jN!vJ25x?WGuXII0vsp!)nmC3c4@ioJknh`@1^- z&MXl(&TFU{LSY*kpYu&05 z{$`UtH&+S3in23&4rYArF0*9e4<@*A2E0nwoc#NOa@cB zkjkIx{DCQ&xTv~&!U^rn)bp$uC`)~+nv4U{9pEVe>jzo0H%4&I)H4a)ML&raEGQsfQ96vvJvaD42z)9F79w*q{FRh2ip0 z_xr!`=fUIWyHH3`k=XTs^m7>VEDfB7z2q}~T`)Clb8513F;miA(M*OHQy(PZ2O;nA z!@co#O<`vcVj>{KiIhGVWVK)fcf3N)H@i{JA5vUbYn?jq%jY|>Q0XYf-x`WWd?23j z??!gj$sULxw2o;{gJYQp&NdDWUTr(zyHgus=6XJ_GQ%CNjVzN3RQ$6+e=2OxC6&Z0PfkKq|rT7IH;Zyrp z|EKvUN?sZq^H@@wE~?Lnd8z8RvC4U$c%U-|7fL6m#GIVy8Fjra+vmO-;8X5Z8?%Eo zpK`#f^$lz))%bd3)0^bM*O8jH*YGH5V^_?V{W7jBzzX-clu&d2yk{!pPF!IRrW$75 z^y5SeAwFT%mO`@sla?Rr9MDves#1~3I|k?^yb$1%aZ6jQ*1ydcM;i9%~-Ha64l3ZuMJo+l*aA6Q6+qQ_)Sbq95w^izZbUr983>MkZiF)9GMUSlg^r)#^gl63_c}i z-G4;Brdm5V39e_VkObY3&Mv*N0Nx9Egw`9TXh=*^aHUS877gRo`wd*5SnYA}-V+dH zvC0s2ox=?0Wo!E__co`3^X9)DI_y*EXJ%%$a&YMKgOiBT zq8X9>rlvOUXl_nR8M2N64$796mWrsU&2s(E-}@E%!Ew94A^!%Z8Q~Z{N2p1&>41Ph z zAj}Yh8zNGt12FP=zzrD8d61M6j^GAL9WiLJh)r;V*q;z^zfN#Nh!rBZpEvl>gfN5k ze}76e z%*@Rhb`nBZBMn%7|Naf}^z<|`Hueol6oK+nK59N@XlSV1p8+-**&*=F^NFdc?)v{@ zt0`#HlQ6Zo!6MmFRi(IZH1HG=5s^M3i6J&379k~57J3w_{XDb0?72Y;4u*WM>sifMfW-bORGT!5PUS78VC?|6}BX(~)I|IsCvb zg_o?XJLQ5W37I_+nIa^i!uUiI?8S}Q+Hhx!P0RjgXDJCIb8>R_IVsc*sr4QA3X`xC z4Y9weBTx>I`D9~kuwg=*)Nn0v{I97f+&(<8=0YYq{FuFLuBlPZ*78TBG%Jg6NY}gM z{a^oqk%`;``$g*~#v3rj0Ot!>&Qz=a(f<&fSp$d~`(L(b-w&ey$U$ zFvg)R{ZDK8{?l67Xtmjytu4pGHHS*wW+lqGdWFRqu!qe0&-@K_Az7H2!RYJjBV}0N zqEHT4|M$!@;=Et9loq4I|Hpikuk715+gxF~e!N>{r6p^FK#})}6DMXYHeJT}^3|)E z>EIGoev+8)<&6^GdHDFw8jD>&{N;;DR8$mjQ~QEv?QLxa!1|m+(Yz;9!{KiU7Jy1t9|vaqtYUVqB=?Afy!Sy{U@T^LwqPJ1lqbmHuVTeqzI)6bOl zonC2wWafm546`j;kb6XYq=J<~Z)#A;Hp^Jg-li;3p-P2cV^wzO=nDirPr#}tHqzrYiVH-a00fgo`DKEH5V_ZeLQR~JndVK zo;r2Psib5})@0Sw({dahJ$?+Vo`J0=XP=HKEj2TFI<}nj^7cOb_xt_+88ak8g_OSg z0)ttxMMu~~;d-WnO!ow^3;u54dSgTe~DWM4fU<3Xt literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..af3cfd92adc9aee85be6f61f1da9824fed111c23 GIT binary patch literal 5947 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 Z-W{}CsB{oCeF5epD9fwM)yjMb`+xAmy}tke literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a931b07c7719944e3d32f6aae7287675641295ba GIT binary patch literal 6822 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 U3oi`Z%m4rY07*qoM6N<$f?e)Xc>n+a literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..109f5a6cca01211780a69b2e58c00ea576342318 GIT binary patch literal 9829 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 Q@c;k-07*qoM6N<$g4)PlTmS$7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..afad639e948037785e97eb52858336bf0f0e070b GIT binary patch literal 278 zcmV+x0qOpUP)D#h z*<+nrjFR3^N(@ZZg{97IMce9YX0p;<|3?U#EXnTVNh!GB7a{!Ti6gpoQ51oCp661^wgO1eY-4{d54Ila0vgY<45Xnz c9LH_yZ|F=!ZnKoXbpQYW07*qoM6N<$f|Vb6&;S4c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ba1ce9240ded1c5c100480ea38de1551f6c1d41e GIT binary patch literal 8362 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 jvYWi=CwiB1`*I|IA8uWhvtGGDr literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..db776c2e83c79d35485a2a9698eda39968954481 GIT binary patch literal 15606 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

xRq$zYYpuXCeY#!raymz0 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3375b720d60d224bb90efed811c58c9679c258b1 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nRK~ERQkcznEitq3K)(fOH7&3GS W@oUO{R%iuEGI+ZBxvX^9&qaD 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

p(r&N>OsX@7zq-n6eZ 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..04567edc9fd0d860aa54efa0f13f20a36a328221 GIT binary patch literal 16327 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 VwDST1kom7^Jkowxs`5JMzX8jy{cZpN literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..dfa60b955ce7271cbf16e3249c5cf72cb3721d56 GIT binary patch literal 13583 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a54fd8553525be82a8cbba8794275f6c6ce87b43 GIT binary patch literal 8190 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 O0&R6YwF(v65C03U)3*x% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..01179799da5cc0926f8810883dcf615667d1f911 GIT binary patch literal 55493 zcmX_n18`*T6K$N0H@0nOW81dvWMkX5osDhVwr$&f^ZUP7uj-qrTQgJl>wCKUobJAN z!sTVf;GnUffq;PEB*cXkfq;N}0mn}Wi>#da$~m`E;%8;VqkiF9E@wyjnh!GRwd3`E}Xa0+gD?o_LUJUxLjT~Gq_U5V0yKany$;S61A z-mjaT6waIpaK>G}C%98;?tA7lGuYD$SmyuEpiBN` z2^vuZ0}&XD&o`}!opA(_gvP+a^7MGN5cQ%<)D;6<Aaob~wI!%18BO#;V1Ogbjt@6JAN6Hv=uWHWL3gf?y=tMr9LbWHh-f{{pc`W$Ze1Q;uh z|4iIg_s{^1aA32TKishE5s5aNOk=cOWuU8-Ij!ROXKErnGxY=AF{tzLPj*-od7c_$ zmV8>$Fq>R9i(S9hPpL%K9qR0SsUp|+`z?u5iC|u`)(SK8^~@O59TW6@u&w=MIvbnA zfn<!CY`#dh%j4;K3tP+%;B4(EOlH%u1X69M%hkX4 zhhy1Xu6TcJH>TBjq0RtrK^&-d#omhb!Z>t!eK6M^rO!Q;`K&gZU6-V}6PT_2cK{k+a-#NqGp zWV+f%7t#MhgZ8T)xXbkhuY9AyOwQU65Y4i=yj}Wz0f5a8bZK?kQCd*Ihn;+0_d?aG zwa->+^j4~M>XL^dP&YbU?EsfwTZKxk`VT(i=XP%(S97$d9=M3<8c!8UYOCG(;%FjO z2sFgvU^rTxMf2l+g1*iqkxZt4T>g!8rLAY&4-3-~;291_GEp4g-;Tq=0b1*2O611~ zyni)>pv^!3&mn(0U3KXPb!V7SN9i? zdiqQ5C)2o(E<4@c7$DlRu=uQU*_^>cZQdVj<ovbx#s0))UIF9=Ml zLZX&-AVf==^`(yX@NteDJxd;8sNdGt5ZeFDn^>U7mS?t!J;3IZQFyboYq^5^KyKj* zh1R}BUEpW+ob^TiVqSjetH7F#Yam$mVd=hLK2M;vtBO%^`)<<{uhHihg2L6fk=w@> ztoltpN5|bl+FSBzV!b1WISb$bV~@zQRJhZ?lUTg9rlJqJH$7ylb-V2FC8Tvv0qD+h zU^tG0`&FBV#u6m@Pw1ZVzFELd==1uGUANapsX12rfmwk6iF{Es#j$D6EHsv&KMu4g7Ms&TRf^Gn-9scDgg0f~Yy2Y)C!A!)Y~JYh)$PE2c7~bay=h zNQ7Rap2W!FKdI>|O0qf}jRz#F=lkOsC_3ZeRk1#Ud1kbOc>PW|GvN103#Ssr#_!oB z+D5}seSW;|_k-IxW)dDp#g|pyOkINQxwW`NX2n@@dlMx+MRlFYkAFb*t803`Ij!I* zuDCrODF8cty+7XLxOb#wl99R6W2)OldcDia=BjnA>_KS zERTaisq=&lT##3Q!gZgUmZs2aU|0ITYr+C|aa&ue%|1 zw0on05I6u0um!g)FhwoE_qtu5<_A~TY7x2?3^VZfet!a#aiqP`WFlp!4Hz7`7K_bV z{o#0u)*;)*uVrkl^501e2anTq5;&wkZss4mVlRM>eLP=1?2qun-Il_%JuY@V!m#fk zZ?L%EAN~cX20ot;AZTNC$0lId8|ne71mJAf(^-Eu9@qDjn4H0xGhXMuhUhKRz)Sn{ z`=befJoz4tqngS{*Qz{c!{c!PDwn}<}9D!EgF$cN5OXACe$yt9jJzc>#vo$*2>4r4W!vH zlg0c$qmh_9HzJ#!Ipawa!_%b-^j|=-fc&WQ8}<&Q04>kkYO+#`V*!Ss=yks=C{);M znBlcrDo0JMllWCdIIq2c9z8&RIgrL^1OVY7vpEOB3lz)g?}6vbb#_8RK$stle84WC zKIm}12;n5822>ChfcOf9#SF;4TCF<(q&-DT+BiDBE{jBc7#=|E+U@s1h8K@>qrAUu zkp{%fdEX9^rD6S8EEmlINV3yo!~+sO&p*sMm)E-%9HTp5C=}#rERkHGmERvE?Vnxu z8$^i%K->X}2<|m__i@ux0^jU5S0EBr-{-mZH4tF{Pt1gL=RmouiU2@IuiiL(tsCHK z0S*@Zk+W3)$BPw&7MQsbF8~OmP#*V3sd|cLSL;pUBI!&fAqe=kf7=)sGudqRDK$gb z3gc$fiWwN^$hP6ABJu=j%fq5Y6S$nu!FaU+Wf91cF^aYj?Rq5gVvF6*_t%GzrH6+H zpx8F(3qvG!3##KsH8MEXj~ev?6h9Oi?M{?ctX9iWdwkAyxThHozBB~6@%1~V_33FA z;T+-Nx1snxKxinK((?9MVmP9cCIBn=5jcQJYs(djpzqr}p3WiQuzJ1M^RW=7)0rWW zIm~AXq@nj^rYx7rueQ533@>J}s3CyBB-&d6?y*}J=4Q?d`&AH_8k8(-2my=1KUS_% zfx#yk;HXfpOgU)|0PU`eG4GT?-+)KKj>?lxS%(6TQs|DmU~Y$nr6zaMuOO)R7mfbM zlA0c&Vw!?9IZ}8+DzzHCa=Z>0A}}tu8-oW-C--z`m&4I`2pqPdv_W5~LZLcZFD^>A z&)0jN%|vbqolk^;ZQ>_2i528D(M1?oalT+M^y)ak5<{oFblLczbY`>VDlPOa^Uc<~ zmK`6hGDT7rV06#*MvGI}CAZ(CgKYWA-*Q67s93?;W|to;=?X5Fs|tmp zaEsUo?NX_9)T)(0LW8Zc*_^9RwtJs~w8*H?Q8LEtqud8Wq6{2;0ga6;X&_v`tt%lW z_XRQvjv`R0vDTfg4zg5?#t6suiwj2|PG-!C1q{=T($@JtZ-w$eA#Dkx0hO_-2~=cy z-7A>cp}#XyC(s|^j0|?&QBdYnfZ>RX#9}dvl^V!=K(nVqs&(DrZc|62T5>b66hifU zMf$gZ9t?u@7+D!)w>AMoUTcfEGOsrx>IhFW$nc=t{-sXqcq3POR}|NE483E=j0rSC z*&kun`*BXJ@(mn7DsW6~lDg7B*07*I^LQb{5H)xqT5BpQm`+~3+sl2jx~h(U6(1%? zS#;c|;jH`P1dpTv(187-n!sJKEp`-zPFs~R6(iZ}xanqA0y3P;P*<TP#8zu}JyxBNqL8cSS%e=y7eG$GF`R~RMluL(vvKMZw5GAD?u zeniABm2=E)BRo2^`9AqIyq*kQRb+Nl+;1SU` zf%=U8d(MVh8U+C)AkpL|e9|*%jG*a(Fk!F6sSI)$sthGZLUirsqMW)!JWh7e*1!`u z788!JoRcP&hs=Q1NV%|6B9RP35|%;~`N{7Uz*&O5IXs@~{Yum8&s(lLB5{)kemThG zveFqWP|$Tfr;`;5X=xzWI$-_bTf%&8tKHsQX$)Xteb4?-l2SeLk(49*2U+u6&T+>4 z!^{l&jBpq-+)C#IxRMN!@{uCD$O}+dr@^#)`8Y=-bj)ZWlg792fFP#aMfz2H-y092 z5;C)jNvYp&eoRP)aBFZjwU4_woFgY{tSRQ46(n@@BzT@(pX8Etw7L*&|zpC7}R6j13^EdUlWX1 ztGOKpieI_gzB6O6I1B{^r(Ux*FMX}IsCKw!Bl1JD@+Z4}fhda6XIQIy0d=4pg+7B_ zdLWh=taRLA^rm~@517FA7c#R?2)xoolt&?g{ONGvi!i9az&W8qmOUJpOq>%Q5KJ z8$8S3zzJ#T_IkU&Sg9dK3L_e2=wP<|6axdr`HhsL*!}SSLHW;r}?ExhtR0J2f z2J%j?(D#J;1$OLbZiMC5-*XS!#jYaoPOTSV>*BTK`iS0{==$i!s0D%Lx1Pqvr!kDg zK>#VfW5s1^k0A8O0sqGQhND3_eyc^V2g};+<}gt1>j>SJ>(6($D%|=uC+lO7Bj=E?2%^Jmf-`E;yn>WDqrkm-0)&OKrrnl>rD% zIu)9N;hGI}m&`G5)Z`Z{;!VqjE7#RJug=$;f=o)mH6B0PJS?+zgK{-;28K+MPKc>v z7~1KBOOSkj&0Vu*xBrge-Cb-Ps3!RT^^r_^?kPGX-i0Z*XhDdKRfOeC_0l(*dG8&j zH#~yS>^IvVvST^IVzorsZc6>HZ2_zvrlSl_lkr81h2qIi)BVOWIytFhW1r~H77`I( zDI#;U6`n23{-|yO8{2!JJ-=2>tz908@z8{NozAuY$!0VpxYi=g-+l-0a@xR44 zVT$b-ox@z=E}1W0caAV`38`qcO|5Yt8;;c?rQDM|IhOU`;>&dO=5ci?M7RfsR&7@( zcz-fnszxpIYO*h)rqiQSzH^9|OpR1krBi%!FmSaw3P!H)R#gm!J>pB$J4U?7{)}XG zG)4R3S0fee)UPbqTjgikY^uQwIZF+LsWv^qI^;QbPd3MWHK$DXXV z200UdsuA%E9Ib|<%Vo%&KCvW=`?4l*L9`=}S7Kb|t^wgi{(4tkuw!#sVTjT*!%>hO zpQ(*NU~W*?Y=Z4i2L|@-{BFRUotU-W--1OrzRa?E++34!IPpzr+3eahx$esKX^}7D z8Y54Cm<2~NLY{ke-(~9vR%|=W!>P{I zz_)z_(_%LABkjVIDU17+&iMB$Jb3IM`^O~6B`t0WRVGjhgtMCBB!EEo8PMExObK)pjD zw`G(|Ap`uIU2zh>1p_s4_q(WbkzCzjq+Q-N_JRW)&jqamGW#U@4jBV6?~PX087U zwneqWaJw|v>la@xU!}2oVd0Ob$Lm=uJk`6)=x=af#OfZjN8rYyJ}<$f$Ybe{r<~1S z*6vSeluT*xuZ%U=cOk|Dt&C2dkik$e?~WXcN$##`jNCu}V9~iNmbAqlC!rLIcXzoo zP<`_)lD`|e9gmB6wz?##K)5)+YYVoCf(&-*>h<+#MUbGY85-MlcGVw?A`fRtXiY(d z-|s1^?s^0%VNQwU#FvtA6;U$@Wfp^L37QiZ-2*ikk6pgX{iHYUuVrnk657A&{ZPxG zVfWvefx3ADcKoHf^e0$d_C5=~z9U*qXLs2ha?5s}n|W6Ug30(L%g|^wcr+@1+%A>v zclLIVar?0U1XS_DZMR`(vC*$q`7$)Q)Oy$GSH%W6YeE9NmDR=Ic4k@YHK2b0-`8gp zxRe17qXvamRSd230r>%o(0q+IsYj^Z_Sb$kO+OQ_FM&01L=L>=8oGE19<2(CW`$tY z)vb0%t&iy`V8{y069Mk|Rk13Y8(X`ZjosSIegXbTv89R12_J)IgJ9KBzV>8SzwW$T zk0{hcbmZ2m1zNWoi`$*7^~b)}D0jCByN~%K*my`3OQ%S*Z{Z{WGPX=M{k;zm-1vO( zwyRh)0Ov!#)iDR;pli2Nr76<69c$ZPT<@Mo_en+vTZU&~dU_qfmIYHmX1XAy?v3sl z1tdAV-usm8{#)zIYzg?$C1L-Y;>PIUU_Viv_6ASGXHj*9YH4%8 z)1ReEoz`M)f19=&ELGq*qB{rbp;iq(A`LUGi^A=}gXM;d<;HfQA@TNhak4h$RVj0X8|JQaGxmQfi zFWYTQSg?TXo?pimdE@CLuPzQ#yCtB3LcpwmSXpU{b$D?l!~Uzu)Q zt<$gWIfhTI!33Z~k%0c94HE2o&b^4Y@eKH53vtnc*iYIZyWT)}g2m%&yWr~J87jvO z2bN>I_S7gkQ6f^oCsTtxu12_6CwF?bARjE6-+3g6$_u+>i~4?NdO8|Dn<#%8StB?i z7c43b8=Zs1>CDz>D|Nd4HJewLKcOacLRTi+7UE%fyBc>A9Fq&bg%EV!0*A|v)b2v; zbfRlMzBxO!ksp~V#L5SKL|Nf7orS>ThLO=G-%{%JplW^;GF!!!KQJQ5j25(P4Q;cD zsM*c-_%=Jcbdis_Q{ErjB8Y4jKHbQfpTO!UAA&c$?fVa6qtfy8vuHL!CEun)=*lD5 zb_@OqkIc&h0dA`cy?m3!=}fZJ`DOO=MhLwo2#pS*XbE1Y4bO5`HTH%BL$j7a2& z@lZvop!FB%=ybAAV1Gy$6{ssNn)nGlM&(A!QY+s+hfC#B$%WZf%zcZV8bOou3ZE~w z1cO6NNs9CqWu`W7xl$+ZI#hmWWoX)WLZ=(u((93YrYAue&X9sR`HdW^8PPml&VhHN zYhELdC~%E#s_D47ggte@y^moxG?5ns%?${Rt~8_5oV`jNcZ`K5$01j$gBOE@0r z5SMEh)*GTSUVE0ut9tnXmjIACkAlDw6(Nc*qm_((P4haQ9zT68)U`m7qm zR;8WWg_1oZ(A3w`IXRQI4ZiE|--`8A3+~(457uUC?Wq?ontJ*^) zE?R?=L#Km}V6dKK)ScM_cFkPf(CJMGBVJlt751=pt6kF1Vm z?R%7t1L!rUM6Q?u8702pd;H)9QZnoq&DuHQu3jT!5eZwjwnihC;917`H4T+mW02tA4A zbaZ-f=w(=R>ZD#zqHeS55;}F~Sk^86d&SuUYSkC<9WMi1FQGL*7`C6`R7sVXbP7_^ zJ%5=$&wB0GAolNH)3F3)6IY8W2FRy_jkmwqeZmGRAQ=jps2U)c{l?|r-sWPb$zXe-*ImSS|f zX?WbxzYPcthtmgFNUqL;%qaEL>i3r3Hi9c&krSqalTh(+k)Ag>Rx31^u}M)L+H9j@ z@-cfHm^!TnnSV#jDLxgDT8dKtiH5)v^-;&yXeHWrkC*i(&M%2a+amgi6;7#)xa2`u zYo~U&RX^;FA5A-pzu*&nkBtZtjCa;j$@hpH{U{b8Mv4Y}7X^kVTtXkF z-G-OmBJ2#G8-kmN<5V_7}g1!e#7_~|bq@)^-%niw#AvG&Kvs0=L14T5{!vR{)0 z3qM*EOzyUamqVkKBJqJE#DyiIbh_bQJ!}pqy2ibyqlx7EPhB5GTt#00l$YmH2uoI? z4{Ls(eIy&}AH;}f&XA;(OpC_kMA4|DrN3p5mrO;nTp+DA>8%u&h-A3Lc(GC3zs-)W z)5aH;5Q)i(qE$uV@R6>@Z!cvM(YA|<%Em0(lJ-g*VN0&MxlAXBk95Z`uAe6fFn)Ua zi{G8c*TaF&-9p71F3qKiKc&Ruehgv>yDr3x&M(DNuROZl7{nVO6GiidUviMl_S(1ORT(`UZLHs^&}=p7>V=PIgt8wZz}XZ;lUN!)f-*V*Md5*`yj zn}z&cApP`KVs0(60GvuB(<#Ds9dWCkdcD)CQM}3A12;aq&_NRykm9X90u2K5y)NgJMR4hoPZ+wmqE!O3mh|@umrOL(W;@Z4Q6|lck z`HzA^EAvB#`B(-fm&ccOy(&vr^=Ke#E<&`=JbAmVRim}gUD3(!a4@e+o~(5Gb#imaS&4|tU8W|~X7`|Guqdj%I& zu*Qu!E=|XHTmHrmki}Gfp=agq-dCs5z_odCZ?q0PJ9zUJPl@zD!)+jA8 z$CtQf<9Bs${wtQ>?owflH+!1I2`CqvnH~x3PPzP)?GS}f-5%7!TrRP7TD1!U8}dft z@^JdpYCy2ARJ&QUGkUN#ky1YZX z63x0O9lN-XIzLgnlJ0f$$92av+bI+lsMXh~m4~PmRa)*-7FG;dA0?oo?c;kAQZ+ZE zDh^P~ijjTmvACe##Gf_0AeS(T$5ath#cMJg&}x9>fc&*ewWJalw!X`af2RO4tEt)0+kwp=p#(|=%tlU5up*e|H;-WqZl9! z-3Q3-pC5)=QKgojB$rc9R*|94S_B?Z){-t%684f0G@8AgyJ`;d80xk8DJ@QdW@>v| zMQaTYg2c!)0=bjjZWd*kE;*!UQ8fC=j|;?qbE}>?<7nGD8B4}ZDu;&mnd1mJwjHZ_ zXq(G;$h=biiIi&^y3=5=7CC%y(|p@L03zblkNY!9&uxq+hMxw7Lr)wSg<;9ctD2jRlQ` z%dg38Ycw-w@I1_s;f8V7haPMn3 zASxWpX1(NpFT;~Qj>3%=SJ0uV=;wJoX7FC5d_d;2vJW7VSUcbXE!J?PIRclM_~ItV zXl9a7!`sHvZ^#^(erz48;~mXdXLM$%Lq4W9)zxypl`TjCSWK=>u38JX)UKtr21!T@?-SxuPdPH`nG?>t z=n{|lrtV(6Tu+bf3oJ>5PQDSe04YDa6rIfXqHH)7)S=pkZvi3tI+Nm+LphV-Nc(-3qORRZWQVs+(E%5?wOI%oW2=lobK$}^14(yQ z6H-U5!^U`C7uomouNIT~)(zx=DnnZ_<5Lj ztwaYKl;gO$epA%FW2Ws-IF@f5N;MT++xo23u+2ueCk7ha%n`+Id^ zcSXx>G5sxC&3*Tq>WU1P=K#6K%|DC7Gut@#acF{WHuDn|8@z!eLFVEzc(T$z9dSEX zo~hOCJS}9is-eZ*ImKJSzA|c7_`b(*xHTzX%kx{N4tMnh&!sWxct%>~R?9oDU%Hev zlFWAd)-|7@jQl&QY<=geD<7u$_C_>cV(v;O?$KP9pm7$6NwHa%&OeGmA6}(@zOn84 zr4^>_-OyM}eNLRQOW&_}SMoz#x^jRsn=lnV?yc;GL7Xi?fOZ)I@cc6( z)H_!fPPL@*`FBU0fdEMWmrn_lQispq3VpDkTz7;c! zPzs|PHOl1N%3M!I5jWE`4~HJorSRYG7zTE;S~mU2scmHSb|W~arGWbd9+D4lBs(^= z9)IP@Z@X3DaK=|ytOIXe>DPapum;qEx@F;q(5wR0irL0Qc42FkBHONfZb~PfPaEf- z{dslUN$yNso57u9j!o3*ri}7wmFrc(Y)j=VOKMbRnXJ8_*;|)iUfcP|b4DedAHeA) zf-0=*0V<6e8IN1gH@8rBJBZP@$Fwy!ziJ%$41k{si^a=+cVPc1oLG@~k$;U>GPapY zHK00WUHq`DCutqgubCrf`mN_hnt#bRkNw(|dfo_+{r4%P#jbEi0ZRRK&so%_12j{HwW#fuj zkn5M2-HFf5u?>`1PkaH6KLM?J@dBmmjeE(AXQa=qr4NacR&&1Vew6EJtLsV5@9w_~ z8{WMgKfM)mOl%#1esZZE^F3v&Q)r}9=|orvs$?VXMF10OCopt7S4upaPWx_n`Zwn3 zFgo!NhTrN zA&=W(bS5H~a$tbM!-y7BVWgVJ3B6~_jk&Epn%Dxy_fW;YNIJy!6$!HVw<^ zO_%>ttA5?;AsyXq7tlIA+|7Mef2m*+a=S_dyr1zqM^oT&?BR9NW2Utzy9AarU#Hj` z`tEWi*q?W5UNdX^{AJV6v06L~pQ2KI4v;HIb6G_Y5Jyd92DO@#8UDo)s9M{r%;UbF z&3(WF?P22~8AGrA41z$42@4oFEFGfFhfo=w-J<;^VH{7Q(cH6HE4u3iG7huA8MND; z8&vGYwg2ZWum3r*YzaTI+^ekF;i01~fVMYYRIy$Cl_2id?ILsxVR^ItQmvi(z1s~Q zxSjq$1i}1>21ijoEj`ULEuQI=us86Fsf&4aVx<$lD;S$BC*98-WF*)9{!9rD`eJ6# z{<`4Y$m=fow_c}mZBbbv`BMGcdODZ)k#)}!!^zxG2JOD5MN7s&pIBK=h{?!Ysg0+J z93wtEe0~WNV|*AH1OuO&^8FO78L!$gT|Jdh$yD)0vxg^wlv=+1s@vY!AS_L9WCHUD z!veR@K3pz=D8bA}>?l}NPB~1mqcH@bKq+)#P^OCJcsur zcMVxjm{Dldk8^ox7mCLArT{bDxndKD3~NsP=rRF;#NtV;FeITcAuw(cMH7SoJ^b3% z+q1lH=f^V<*7}>4Htf;LiiT^mNk{>N264q(dKScr<^o4&y>n2dP9F^OfCFyoL%2f6C0De%(@H#x>e*m=^vS~*P z+i(>80=($q3@K?wS7@0x(ldB|=X0Uv!02{sQ4`VvPy{Xd>lM~4^gP<@N@asIED~TQ z<%&oNi+mu$v`t^d$mA$!_97sNZ5MO)lFgE?MzvzTm(5EqAdpelkeV$__AQ;Rf*GeF zI-38XP{Fn=KT3g?`*b`YrimWNmu2V-v0DnPgwD&Pib@VHG((Kxp{gh@+x(3odBBG7 z<))=~$I4*#2qWnf{d&cBZeCiFZZX8!#wI2w(U=yVo_tsP8sV?rBEl57Gfo7wQhxzd z#xfobY;uX+BE{rv+1>8Z>8yo!^jTETL<4Uxm_E^WPETqwi)eTGOE9cZ^6UL-k@dZ1 z;SrVe`L%g6?DW?PsF>7i8^x*5{tS0-OL8A{DB{*2&HgD6{PlJbwZm{-GEDaiJPz^^ zzteIwyo@mohEgZDHMs5s!bO+s0vLf?fa4ZhdDL8Qte zfWDF3xBTEn9la@k9qo_8q}7^AZvk1w9}9B`7|hRy2#7#@t!?IjorDKL)GWSPeD;mG%ZXPU8en3R9!bisdzW!c!Tk?tC_Ab!P9Y%#PSE1G zXmRZ45;avq+)6hrPc-OVq}8S0<{!=(QNn@|WZ2{Mi2#4w5q^yZ%lFd^qIm2wCBR*z zqvln4NZs^-e)SsCX#sAAlPoZuN5sU(l}_u4v(?H_5N?tu-kPhc7Uq&z(wYkM{18Q45AN+2N~`>YDfsL$t6TBKENd|os^>>PF&a) z+GpaggU({v_^`WiuVAxS^ra%a8wMe$-W})do5QGTN=REv2eZvFEqZ z&?lVvHF@tWIN$@;Ylq7)j{QfeB_=zC?jXhantaQ^$512if!DmUlc=0lvrL3x0vzdq zv};ngQdB#gro>ZV(VXd?`mPF8 z;B$hLa@z`{7y(8NgHg{v>e|YGqjUW^hUNRUONT1-i~A^z@IW~E2RIKl1?-nhHT}Cq z_9nAn+R-!Lwq#*Xh0R>A6CL)#R#&N694elQ+qK5uAaUQ#+Y4|=MVbY$M;yao47eQ)Igv(Ul-$=Vxi9&PQyTm|+ z=ddL}rc6ZYF6m-S60z@@NO3}(yyVHS`MYaNh@M_m8Y!G=h;5tY#m_=2jzLii_KRm} zQoeU6Uw#VO7C*2eedj7`^rV?`6`_}O3k~`z$o>Pb@+g3ATgM08YT}vN{6z>HxQZ6W z7CCU6}#I6m%C+eFxRKV6bGa7#y2JjpqK;pRstv+k4e>n5cnHMG{ZQD2(>KqFch-{qXo#LE9gIQ; z&1Y#@h3RM4=-5^o8zuV&ccsIUF2aG1e_v8MMd;lxvOQatarCEHg8uto0Up&wWEPEW{~rYY1j)#G2z*t(D7y$QFfi zkI$e&IoHiB8dr@$ZdNWfttG?6@)nIVp#}9w6$4aI=*fS{Qa++L)T|CQ!~kTwzw%s3 zc#*irSLCw4A-LngwhlY6%F89zAeRq!t}(^lNfnMjJFsOv?t>nFh`HE~z4J_AQJs%( zU@s@xq4Cv%F+H8yIGAEoOWv6HYE1<1B8A@l*xsE}k={#B%o-mu=;NsQJRr*}*03d+ zx2Z4fY~&l_6%e-(2oYca7$wm_bbR&7ZQDTb!+qC1Z8?hdp>0cYV?RR6A zQlIX}WnR9=wpUEx=y1$%9Ea|B(U-6#d${2;i-5E=U7ShBb9>4Re(q|1o@0Gq5Plx;zbE*FOMDD8Z+dzgGXQ|Nq0B z|L~;7oTf`p0fFFA0&h}QN z0p2mq%iC=_&Hunm;*Hi3_gD3;guz`kN5Y)cC|ui3_b9g`Iox}>GGEMUh7i+^iZzk2 zUTnSr(Vj0$hcvjMK_@ij%iiT}YnXH6T9?9+ovTGEZ&WU{;o$}KO$*L2GY;t)yQs~L zsF|E>Dwu%slWFgAAKU!XMe?N9-lbWk*W#QzWET z!&jzw@b|^44h&~Y$tpVN#_`#Ta&J5I3>!>IM|3Forn}9CUZuVJUDx&5wRF&)pYeQH zS@>8(lYB3DB{IH_Oh@K*jKhKg-pkJJI^_9x+*-yscVkOhbYM#KF@~yb=i9#TS(Z8< zC|R=v$CS-taxeL?eq+mmZAW*la|f@CoYX6%kTrRIB)CZjuT4W6&&T9%4n!H}x*GsJ zV1g;RFR+i*S~1h&DbnjT+vLRrH+YiAs@2#yeZNF#7;2>kNx@}br8lT&exJ}T<;))I zIOAQ=lR77?M48&YtZW<(<2rBmexq-HBXWggY!KOEH#~IMyO52ONxLIIQ^}>3iEhgv zg8}9(n0QW0n$*|A4SpMYumQ9k7NLBzhky4j@7u(+A$If@oM{~1TXcgFhC-wZy&XBG zG>+n?NHumWOs|8oJNe9u$q&TK>YaY#=!r?Ypl}*J3Sh#Sy?c!XHZPcg z8elSM(<$kRQ3=%BVkb*ymsl-!AB(kP@F}5UxyTbBz$_P)Z1OcLA@}uO6E7*9T%^gb zL0HNcsAyy+xd$bT%Q%Gvk1u6d{cD^Q=XzEllrHEWV>%8Kge4HRl*o;uQ09}3 zP=lT8-`@-)@2lm0B!LcjbYWvxVRtfq#F;dOhP+3{F$S$|qyWk%_#AL_daTgC%rIB;>C@}b-;Xyy+FLBtC+%MaJo18L=_xpEc zGDwxHd<)$yXP=hKU{PThK-V=NPsq>P{p)8X?1Qb;Fsm^n&b9`}^21|O7%kRh@3`R1 z3{EMSth0A1a&mxAE?raH^5&F>D3WYYAM{7y8qHX+{!xf<_jeBUj0ffleQATa45)m;jITSQ znJL=z$0s@bG#P4UcM$y2ZL6MS2@C+9OSY;j{k8Ez1^@frB8RnHw#kZ5(lfPk-v3d{ zl_Z67dck^0$CU?tdV2aJm$$?ySY-2WMz@|sflnuCMaxfEjLwcPfzVo0PvwB#0!wh5 z2Yh^3LiG=Y`!$=q*+8a?BGf8Tqf3PEiH}U8odP>@!%bN}JF=NXj|T$s0_J6OCX>B< zhf!{TIuqQdlux$H6_?=NWg0>buZlQ2d;e)nZiIm#F^N-L`oXgfy3lU3DUCJe10<<9 zV!d)tHc@yS=Zhnr`jL8A<;059WrELKMx+`FP*ex_!QN%@q!I(%V`(H8rSEIdsy|P# zCX!8oh)$Ll!@LN!$$Q(xNn2z9{Mq1zK)>Jn>)9(uwKPw+ zY_of{B{R5M-kdp2)>cm7Uz1XtOvDDt zRHu=;zhA%q=|CEjDp;QitVwndClf@W4{RcI{vIQVcDh6D8y+fVLQnJYGhyq`r#qC5 z)Q2n^Yv`Re9-a>+EOh3EVN%xWR&_zfA0hJZPl9SNAu~rN|K+pgM3|l79RGO#^u>ha zhGJG583645B^FUTt5gOdN~IMD(dqU4e*h3c@4gKv>H{*^JLZpFE+z)E3lkL?d&hXO zR`ZvM*Z3~@r;6mVTrz;61m~76WE}d)WKTPYF?J0FZ_rNm;j_W=ZE>Cu7#^oDRu5yQ zOLLJKTeiYVd<9e+BY^DTf1vEk*1F%gstR-LHIp~0%}j}9ymwzRiQ^Cc(1V%ASTTV? zCkC{jJMe8GM*)B3#@J62nGtyH>~_j-0v1$04Xgf^-3r`*p8MhKs6)>qRk>E{E3ulK}XL4eFhj6s- z9s9wkqzh+v^pxgRCRk((DZ$-C330tybyCQ>5)+Kal;4H&#%XHig4<{LxL`Mi1IHgh zWEq>gj0BDa5qM%~5DD0%aCY-!VK~0~LC)HpcsM%@?u9oJ&Mw`}Oh^Sx$ME4KLLrkh z)(t5_b)gfo(Q0O+#Vb|Fgi2)#XE(-$vx9!j97f;%Z2>W6dd3e`IJ=KDZEV}4YDHXh z1(rDPq^b)BSgEnv!FKF((cb=}m@2R)V-{paXZ=J87$VpuRBbL6xIvP#EJO9;^{kO33?BshNRtQLHKE-CS5sz3~|stj$z zc7E7ggd(cR&1wfji5VF*M*PAAO`RvUVuJW&on%o*@j(AjSTRuO9po`SP(@3fRLFO!xSmSmv6KvQfy+Yz~QEPk@i!q#%&Ef1&j6q|?U-S)?z$e05;i>?R zh4)7c(9%Qh*Aiq8xL7K6>?3axZKtNi24;F@MTN_QY~vO%-TL9|&{fYZ15rG`)2Z_{ zK#c5(vvLJc*Y00xUSSP^WSYqBKP-XAh;WzbbI5pk3{Xpbs72I~RjiD9-zCg*f(Pp7 z&xeV9=v`O$t3CY1m|~%jgmqh780l%=e}7ME`^88X&aR5;qx*0iwZ%h1%|Q$ohw-x3 z1WANn%l|w2DFgZG&|9_-k;XWn0%Xrc4Mrna=#WuxMR8ppV*$nlrvVNEHO896;ut>C z5sbTWOEH|#eJH{0C1FO9SQxZwlN^G%OBMSOuECv0ZpAFjvtBq|IJ>`mz#yYY6@EK2 zL%Mr`$n1)xGk-hPg|mYo=2BE^;R=l(PjLGli3M}@s41F(sR`(qOQv*tUsSP?rd-^6 zkV3q;1!EWqH9?96BP-lu?)|?0Yhjg^X3W?aad?UOqa(bGj(uefftANmZGrXiqP25j5jrAiMUr(22B1j-_y1+6YuXE)GxW=r5SwSP<8k)?s#3QITlRD(B-K>jZIV>nd!Gv&j zK(TzS@WBXT`!EZ$7RjT6U>J@1+xr;|A0x%tGE6`t-FaQiuS_0HA(+}NyJQ4W%oQ8- z_5!6w#+Y?@3WpS93gfU9%zyaoC_DIISa8l@B`m;vTZAXf1@@HbhYAQ`Y8^d-Ms(>f zg6p+aOhtO3GG-k+&Jb{?@Ip+9aJl@~+F6|~pt1{RSHOj{LqnLT4;|BtjZ*#Ph2iYV z$vhQwn-cQ5Ee^&2ZD?>&#r(YsdNJq1N#!o9Y5d6(!D>J8+FN*k-%LLD-*72zdrD$B zySy%bd#Za;nAdFqDQe;D++GI@S7q%Kk8cx6iT_34+s$b%oLx%7_M;T{r-RUprrB#v z#rtv-V?np!ses$qp}VzI?!!yDZF0)oOIGE4@i>GT!`Zoiiz}QE&JGE_bVZ8^{0rOk zlj^wRvoiZ~n%f*>k26<| zpvX)?7S5pY3Z*v<4b!{K7)Unaq=IWn;o06KNNB&Qw@{yFiGjgE2HUE`i0} z_6B1?UWa5U=gb*HEu5V!LtI?V)ywNRn;wr3X+2uw;#b1%%&g9_jr7stHKL{KMbqj; zt2B+)ZyT-GMxWJMMAPf4FtxTa7kuTS6g6u{9o*4UuEegX;MfqWrblY4g4LR;iF-M36nU5HmKBE&(*ZM z>25eylA)dK$gwUA#yENYb-Lq-eJxf!TBBvOVSAO7s41~Ybp!EPnXOr{)N?r|Z?TJX z$9J+W;@3V&&uYf6Z8(W7$3~jaj(^L?!8&@zlseIp@n^YJvR16|l5vLWRwns;GeEs^ zcB<|0(Re+h`32S7aO}b#Y-;>j{~`uL9NWa20xhAP^cS)6SzpHVc%gC7u6>1i4)z!I zmXVYSLM3X3_)M+!?30qL%CR;xl_&FWE0;{NGMSS(mUAt1;q3m~ z-~Ijn`1}9z-~R3&k~x`^Ihm9BC3CK^^Jdq7KjmCXnX`o|o-0@(nUgu0lR24RGAo>2 zi#!Fr;mvT<*XXpdTS= zGu+jC-h`UjHKI)9r5bnQXxoK-`j1%6*Z?!PnN2x?RR3BWPrOciFB}()7uNLgj14U= zFG3>`E4BQ*Iy^(;g$?Ee z75;_n|E+Nag|o}N)387#x0lLAjww*5--i|W%IAORjhh!+nqfdtLcJz6?8Ga zEILkN3x(rPm3lr79v7wSKYP&Xr@QTAI!Ej_toilrI^A_t$i-XZsS>qf|K4Zx*oLyi zF0wmYM^Iu1*i+oTSM6MLv5pKe?PYTV)NWZ9gh}AIyS9h4fcpnszh*WOZyW0%ph&_w z(X@nccEwycyJGIY!nn3L^vPWAVF z#{=aVw$`BS>$J_MnMuuIIoGK9bDI4%uh*h$bly_M@9^)Xxfm0l57PmFML&2oTgBqY z6{xJ?**0dXnbe}&lVBgpoDT` zZGIO_P@(qT$PrINj|~0odrRO(P1Vth);(f}4nV0xADyr0HbA2oIYp;0Af9o_khxHJ zi&yI00W~}JRn4ybW3lEkclSCOsL`LVr|BpNEcV0ML1*WF3N-|Dbp7>oMcx`cEw&Mz z{6T3Qg`B-eHEl0+w&paq-Mw5xNgA@+u)RuP^t|uI_d2b0265VaRcO*lP%Bth13g%> zwhF0<5F#73TkCqN8FV+R~Cg}sJK{(BA6R_JFqnCI~|dVZ5^+m)2?7k7sxr)dJlJJ_Q?yA8ajBsz@c5XVeGu(s41}{Ti-Y|>b2F0wI!>BiO#3hmEO?; zw_1Lx7QUJ+$r(E%7Iu=UXu_=65$9^nb&zcG+?Y$0ncAF`V}FCBPEP*%rt#PRxV%FQLVlsbW%mG>1>r89`(n=)n#O4jvWs=qI8{JJnjaDX69{Mo#wDZHvXK7&1;lH_#KT`JH=$ zxJ!REf&wF&Sb5l1w~bWjUO;EXE??7O{MxNV0AI06d=4Hfu0WOTZ_R{7mSw4WO^L#e zy#lcRXdQFBa@||MU7;&lbQKPW-H*2v`{2ec1zy>@TLCOCUDb&<6qtEp-4+!p)J-?V zs@Snl1F!0WRAwRZY4LD&yAF8A&nTFHiR`m*c8|RGOX)!8`O7joRKvm|{bObbQVVB? z)xb<-AyqHTcHn2E3mt+$9zQMeE?(8)V3Zu)gEjzMxLgPRHtx_l=t*;8E-Ds*YL~7_ zioRc?@E^DC$S&k{ORJARQ@{}tlkU7Fy1@RL2UPoGF^-um_*i4yyh{;qXbOvrv{PaG zUh#DCDxDBLg z^|c!c-Z5pa_rrQc4*@F%`@i!^g{km|!rsR1g5v58p}lpFB3FR+$328R3X45uwg8H~ zhxBZ%RG=Pg?oz5hV6qByeE-D0_xrWccs14q2Z9iw1}1fVmg&g)1&L!IlQ((x3AY0GX& zHebz)Vc3Z2vD4zj&d=+Tp6 zB*KT(uHEX8{ZWlT?V0lmWYE(E**kGY5nR?g{^5GiUB@r<2u1-L)PJPYpDT*%v066EaCRdm32^vAvT%0W z-8|8Cz?%qXhbx3>Lkzab0Mxu0v8jUW;`3xH3bDhLIxBBMKaOu=WFsui$t zqVObJfNGj;+f!>V#JF)suTx)5(pb#A?wn%zhMIkmv1n8t0|eX;$gJSKBC$AP$Q8Ju z7pyJNl$&>?|8+i=K+---3cl{#FGB#efrmOLjq%lrIMe9feD-O;t!4-)BkuFA{R+i| zHv@|?tPdW^Dfw)OtS5X2VP**Zd{IvVIe(et7MFa@7CEix_}zQbL>wtBpu*WbR5&~1 z2p$+9^A()&sIFX7Q>kt_kE^kKovbtV8cM();|s$2fhbF*J*#uBQPZb2E18b#5yh!Q zy+0o+qLD>R08_`1@lp)LZr@=UP%iMv(IP~4)h3M)al}=@VMN<+u|7PqWtaEwMWtGU#z0#XS4H#ZJgE?BfK`Q~s1VwY^3x*}W~%{Bb)u;Qyk$i{ zv+JKqXd1BD7|ZxhnoJ>14LXS!0V(1*XsqT5kbJL{%t3|5(n(zYC98!M?hFzMAoeS2 z<{n=;V-#2xRB9r>nCS=g{vaWo9Wy2CS(G0Pr~2XSR%k73;p`X`fJ5h-31>$aXfi7d zaPY&~;T2-$P|xu2ML>#od4la5*jkyz{edl515k0pc^ z`hqXQQxj)<*KWq*k!R~n^J_B`CxQxS7Vt~~;pYfXybZ*Uk`)`YMugWm{)~<_;>j}# z*ull4N17+7$wCC@sd`JXgBcEEVgbp3?k}nCS7sM}jD?GZDM6S?7}kF)C&T%U?-@Bq3+m&Ao@COh=%G3gMia zN4a*3+(0HSoNcCD94Pc{sEfsd$Ap66(j&plW>3Rfy5cY*{W!2kPHHw=x=MF(8E6e- z0YC8S_1kDw8BM%Yte$!D%z+qaWR%KS6I7kYVbX>j(jPiqy;&9TJz*HCg4c;|GaLj0 zUljsq=gToN0Tx3ryA5cnv!OT|s4iC9LK8ClkuI7M^LD*98VIXS)VtRZ$?nRHu?73w zrP4$EQ2c@?Ph@|&OHGDj|1*(=t3M0+fEBoYQ(7cnW3Uz$&%)U~^8Qdrv5qX99ZChf z@C!4P7|!nD8wh7tPu3IZB7p`z4s>315oTG!V+u(i#(a;JBvIJDx11vs6{)-A7W;@0 z;)=Q=2FOO8*7}JPYsmZ*iO8dTCsi{9a+}Bfbx#c!=I-_#{RB+c_*^ulWq8NfQk~T+ zi~~2^+e61RyPIzd6A}1#)6^7oFd6nM7M?7WHkWR>XE)(reEs86K%C{b{L0M8)f?t23VtTz_-K#{2qKMNFLKW&MD%>ynz6*Tm>>F9K2NO6se{RGmsu;GyPx9 zx3NE~VESc70w!8OlBnFVuMosFW5G+CxS!aFMxUrz7>30`zEKruXxd4Of|VQOzKxiu zi$3lr`Kj|{ySw&RM=RD#4siE)3g3Zp#U-ny$-j9Q_pd$^V=s;~VUhJ20}3S|hS6jQ zi&yFAA+8s#ly`&ht=l4mnPyQx=5WBN*hp%|^waqZ{nCVcUa*pk8grHY3L<-cJHt}o zoq<&cXK@xTmjK`;;Tl6f9I+p%`NVnxKI<%-EV-UK*DK#h4hwcluM4t)Jj?c83y44x zbBX*^X(l|8MlATmSur7jPDBpthWzw!vCtVv1&1n9has!qR#OGn%tp4!1X%@e)U|RG z*=RVT-_2dH`et3!5rA0eMb=v^@L?SI&>+(cm;eO=%&Lp&glkL;wjK(bcGfE?TlYYD z&mnpihUUN*Banxw%J2TW5UfBId>CE5wi@`dHCh;zbZ_u54p;`XNoYHt5tRf_$%%XO z2?CScUzRamgck3f*>LdX)1w?fxl}Zp9^PK z!2Nk%ntKah*afOeaUrT~e~AT~(tZy2&fVBn*v0NH?)H)7ce{4*-Sn!roTNXWi(IEy z0p--SbyV0zS4)X+3NdP7Oh9B;PI0d(inzbP!}BFW z1D_?`jw@g(==KTuk-kd!;p`mo`5d(c-OdNAnYoKB$@yHgKxhNx+>SikqmvR3XP3{y z*`+JS;)P3Ed2HDg6M&L#m~Y_42<;bgZ~X0*adG$ec6ptEnGD!=j=Vn+&d!9eXney{ zaSLbXWEH^eu9<0rI?eq$oX5SJrZtPQXp#m#F(x{C^11zgNU!vwa_p|X2{0i~bNkZr zW^+u!SI)vAF`Qk(mM>q04JEVwDRG4JJE_R)b{&a3CbaPomnm)=Q%t1Y+jgmg``y`E zKxWKJsKhbOLJsA1YMTRRnoQXbXIC>)x}LVVR%{%t)hb%Er9LY+iS35<<8j%}Se3Y4 z_i4|^6HDAiYnx_ccN3#a)rsv)wif(G5_i(tE?hlpQOll>36|KA)sMxta{HgHFxFk1 z0ITCa?r#Zx1KID_kH=-#sg68<2+s}YXYXcHj&+d`&d&CJmvV6VuydRLNX`w?e(KPXf=P@=|z;?eERTJwWhy*R&2ou8?kxg;US zhW0b>-~E_o7N{yAzL}phm;8LTH|hRsN4tKu2Ou8n%)cw*6DYKO1^%1d=eU#AIWu_{ zwafsqi^Q03%0GcpHfCdSoK*ihH6A?8e|P*GTnSHQyc-{^KQwCxXoS;XEk>xVb{K8Q`yG{%P7=JJZMLa-a2339TZYG0cC00R=`#ehI zYWFG)+-GicGYtd4)y+ZwmKY4NB02Q4yQLAU45r^hx|+T>up$HwBeQrg}| zpJ26|&|sPiA62xPwhEVWVR#C=?S6iwuQa#KjZf?P7qfM0yH-oOZH6FR#BDXVaizOJ z9)(?iIBjdK5Ziue<4tv=E9zoL+0Itm^qL*Hq>Bre&+Wd@w(~Ks+pd`A z-n15TyG?Cxqc+C6h;}9zRso*IP>R=-q`B~kwx!XwIg9d4q2Y2!_Jv%7a`I5nZArGB zwl<Br@5`cCM_o9w!hWzDPS=e<59=_!AgvsI;6XhPS%CpDj5%FXWM~%y|7%u z?dgtblWWknffsZU2=!nEDXh;sMO=#$8QaI2UH^0LP9nXN+iTJ(`ojhtRzK!y%{ts>$Es|*vVCH08SMw|pSaVUlIL;z-qT$yA_{Z6KXKMYS?w;y?sVxN1H!f$ z8?vSbc4DMVebq6YG;tKNZnLiKL$>YHJos*!jy8SwgAPv6Q6Ber*#g(zAZ^xV`!%Tud`M?LNpGJ;nQDF;!^XQD@p{+-Nh+T(C^1Zr)9QCP_b) zrB~H-)ar-zUi)6!YChvzola@dO&#TRyVD`KYkwWUpye;W)}d*|{&Gmv!A}S3I4smcl5LzOzhByG*g>cC z3c9d?nOn}Tj(oFF!6sl33jgggU6*aB^F>Qmd9xR*f*qEF;BpN$I>4{+q3B%n zgJhsy8}V_6axRRXZ&q?bPI2MvK5&1rAtqL~o^xCQ4mr=*k%i-khX|6Z)`*hhyl$4nO*JhEcF4$GsnXcNMZt7q!UjKo1n+3gWNv~>Z};O&;?^L*U1i0^I6$NCZ)TQHPtWX03xfnLuSa(lzBQb z&j34qp#zs(qj(rEj0ieIv$yX`e-_b; z!#Y6-P)H0+h5qxGbO;i%_aD*u-`cH36}K=ABt)}>J5ax6mkwFiY!&m2GI#oF*$h2q zecK)#)jxkZHa8@Ovtx1sOh23*ka98E@w&GQXNRoA?sQvxWF2i8vgz%}DLRk8bH5^1 z%=}LA_s(9_!A)oYBA{NhQd9owO^OmSb#5%eF&v~OLzuBZ2NO@9S0Dl`Y#w*`3SQs1 zrGa2x5u_da)Wz4L&J?RV97^5a=&D9%X)17+?(ZV#-yo-W4046-D`>{Sra(A3Z zg+$%DBfhNOEc+0Atgp7Fgy}d{q_H!^bnu5?k00yMJw{;648e;GU?>p-#2AIzv0rWC z3h)(!{^KndS*AjEV4iE#qzTO`Rq=vPqKuQlqY3ncg<@csjHh7@72$(=tiGxAox74D z%nh_2IjQTfCJAWF!DtszqG>19JbOV0Eu~TfC{LqZ_wN$`xeqsCVnO$W~G;7n?2ts z+l7HR9nxEQqGkHMxLDvOxPvj%gkd^ymX70O8`tHk+%u;r1E9^DKTK}kBA8^{6SlKw zUvk*pTGEYJ$vL*|kl`OaDsJ$XkqTh|w?$fqequ@(4tWo;g!CU{$DLuYZO^zGm&8`z%k_NLD%&)knB~GCdQ{VcDrQa>2 zi?jw_9Q#e3A(mp;gdM!k|IL%XBk6-XY^VY;A4ZdEkvd&jE>-3fY{CnWqS8Z*4Z_o* z@g(Q?S;xD@L8GJOxx^(L6RreeX6JgA^TH?$>JT;Z$i;*|Jtj}m2CxauL;&Wm2$jKV|u`#T>qD+=RzR>0t zIacc5ZaEHuxh$byWPr?W>LU=7^=~LppU#1{5bhcEkldkLa1wDkYAo61e>9c?vC-M@ z4k)ysH+XrfK1s{r9BGyk0;siOi?IF-uWQP=p;@|&J z4bF}jfGgbij?4`9a*BXmWN>yJdP<+sRnkxF%^wzhzhBrQ6c$?8c2&FcbNONtF_iP_ zX7U1P7Ysps@CxQo?Zri^s#SN5#-4sjsVlN(3=0oG_*hT0YFCKoNb6shhC^7ZkaPD+ z*%)pU;IS_Tc6fiRj}Fp{$#Z0(^yRC)dT;@^Z|E%%;0I7|`QOi!36Wh@43SGEg#25M zV8ux=ue(jIkg+xjh6jLksM#eY(kpJqEl867T&PDSr2NEkte9d9AZQO_Vic<^^|b(Q zmD}-`d&%MMk;u3;T9IYXVfovls~WlH8DS6B4Z{tQ{;DjTMdg-{6jAX9LJE;@^U zr-fJ`Hr8c8a`Ojjzk8V!hKdsQ(U`6SY6N*S@3vvVC!tbrdUh1R*-eli#4{qw(NpCDns-rV5y08y z>G@OuXSYL^BP{**tHas-az5bfaEOSQ4Q(O8$DA-T%%0Tv*_U*jWW)!OY-Cl$;O>K^ z(l8tgq$E8e5=j;-w;~$i4MyE- zq@G8i_LRr!@y=L>1E=BykrCPjw>irxxJ?p9doW}|J1&^)$Fq$E%XOolOzSXktP*Z> zki;KvfS1QcBs&9X!`P9++Xhm+=2Q>Ps6%wPAXFf^cqy#b^c10RxZ(nbm%hoTc6Nb3FLLU;=QQc#`3*}-$t8FUhBArtg(ZLv=hG<%_rqb>f)1Ak>Vbdur_ z9bqIWR61ij1DB`PYoGYt*xolHeH5O7A$oO>ecS>?oxNBF48ze+A{-SmTxD>BnNWcC zPykKKXs&bt>nJh+a&F35+DS5no}dQ!O|<>`UTOnMyYh+PTTFFe%x6zD7$t-n+q?TgRN`qK@$duJ|yfrkN$WEl_0x9=rFM79kMB$0Bq!-KPUAUkGNoT1}8vRA|zv6 z9KmTcHfU-tA#P!GI6=6#(8Sl?1_8KNDi8kT9_Ukfg85nS$%r74gdLWlVz2@X=Yk-bvq2yJU*SbWih6@MI~%B>~z`nq09 z9|)>sUP#Ds-YAn}6E#w}S&b4Q44qE~$c!QKUEM_W5TdY8f3{r%&JJ5Gv)A-F23?+G zIB8LL>VmRtW<}nq;q0<)E(8N)#s_5XpM9Z(tI($DoL4wILqBskJC{_(>EY~bPFqm2 zc`%JhN_8?gJ9_OZCxthycKwtF+TT2%7Gu+TGHe=6na@=+E=461Hh{~q4|%!*7g}QB zXBE^_x^`hnddNxi(rExantOOGLC#lg@@W8e7p%Grk@h3)j) zu7{2nwGR=@tmdlu@TVp(>Gj9=Bjhx1Pjoi8dv#p3^E{D0YEsm^h%@?oQ)NM0DMs5K z!m^Vx#Nh1CgeT`hL6br_yV6L4t|}*kvx}NkCHDxTt$O8=AfkHwxR>|8@qK4VT!=N! z21sr(9gEJ^fBFk;uC5z#{hvW~fA)M5Jdu*vT=DwTsx;LTimODbdZZpXYpTVn&Vd@-zj9fZtF!j! zT>E`toBai?_ZPIOPOa+=U8wf7*)PsqkXzSVO7kR5X%bbz+5OKnoL!pIl%_QO9#RI{ z_3Eqxjj!Eb*!Dm{n>3{rt?RCQR08Gz+Vg1R!3^9 zp88K`(bLmEA^j_)>TluWZ@xtS`qgmEqPJ`*@1g8?Sl~=4LaaLNtFfTWsqb6QDR>na zdv6$r@QPj(`in@XYL`cFc5zg$x}m5g@q>ww^S%@PtyU)GNL`b^^NrrXMw(d`zK!+$ zIJ;aw<0We_vr5wV$4#WUncP3Clc_6P#MMkgnM)Y3Su_t6cKOU-pZiHM?-v~KoyLYf=X1LK z64#buW2_iuy5y(W_nDi1#5F&)o%N3z%v!a);_^nx0plyzKBrX#0+=$JDKq8hK1fTZ z-rK6F{EltarXqP+sV>&cYIAT6n`(W|ut`!ZdVY1&fV0v|V=e`<4d#x&oXxiR;kOLY zx`mt&xvrsoeH)!dLhemqC#S#VRkpuH_kY@cCD@Eb6i6v~1(5CYmHfF?v1gVf`IAPS?&`CjGAU zE|=Jpel_n^Ej@DCmD%k55tFrsgw~FntVP_2c>eNazD=Hot}K_fJn@3yyUrV&UCWz= z2>0wuTGQ3EqgJOp`?55%OMkIw^)o7P`$#R9Ubspti`?d0c2mh`UQ$UkiZ(BKOe-Ub zLnK2w^4u#b4`BsQu2Vh528nikFD-gm`K0PWl&@^kG8hEv^R#assI$nfeNXY^u32hB zsZAQk2i@3PH>E<(-gvuivG#c_MT@5?^?@=C&JH17-Ao+t#fR_;w!l?%fcDd7^h662 zZcxX^-K)M}zrHm2ne|d*DtTyylolf$J59H_)GoRYp`a}(8tyxv^r^}L?-mCoaXZgqLZVR#=oK))y!5U##%b(Cv z;(lYa%P=I+#2CI?@74i!_V2QT^HQmwa}GDj)}n{d<9 z9@J9BpATvgI%M#)VrbpcdYC+`k$HlkFbF_^0^REOS)&5rbGT5@# z7WO{#ve-yHFK?1gw=%0vz2jMvJ9^~!>YHlem(}6y78;ygb_i_MS z^cQ`jAJjL(vPf>^ZjI}FdTddQ)(a2GevNA za~5lDD_y>Ko;XQ2zxrA`xJaD-m%Eee-bns2SNmA~p98Q>7ox9w2nXeUnm zo9~2#^wfGGFTDAl%mDKyr=Xsh3j}BabNBxs!gMjJ^EQ4wLyE)Mkr~l1oarSc(!cGW zDY|^HO`!toC9gkGnY{L9Wz+O)z&M43t=qK>8RNuFtbIYisc;Vie(M9Rr>YoR{K*Qke zdmkyHL~wRr@0BSEQ0`~NSFD=U>G%mD3D6!ARalDUQ~1M=4bS7 zQ8xAw4Qh;oz=t|3+^X@O8{d%>@WqatvhoT2{vlTlz)VQ2I`)wd!u2#X1XYrNKNrf4 zay$I2k54fH$EdDrM*S|LQ*XVm=twu;eqTJqrJ|4sv{`2v8VNfFc=R^`sbIW4hN^d8 z?vdUyLOt-KyaDclgbBrX;zg-F2T@~GW#kkY>GijXjYtZiFbIGNJHM2xVX%c`AtrSj zq{YFc6kYlW{E1vu!`Ax5rIS&ES<9AGWabitEBQ|_$AuwXa`nb7WzTGMkIaH_&48M; z@rGW>mp3Tp;|eFtkUA1NNI>X31&$pz9JzynmOzhDSs02__;$afa^kq63IXb!Ey<1V z3M+(RARd7f4Ee!a95HDrZUvWpZC80%*v(jgv!u7U_#b{!;g7Z}t>Y}-T)J2f9cTz= zhr7hZkZ~_sB@=CFzS19e5{iHMRj^E$8AiKzpK<~6&8uxG`sHOB)S!zF8;D2v{s$GS zb*(~!uk9u&!*+bV5dICRuaUvoVKBG=WLgc*?zw7kb~O8o^8#n5XJ@U%7Q7qbnSeTX ziNLqe1bVUSOO2*4OK5;X=z7>dkH|?67^qP@ld?MF;WzWt#b=z~iHQkB<6P$S3`{-C1&nJ10-d^IWo$mwXlV3l$-`uFyQ$1d$anP zVloN%Zi`!kC#Ww3GdS?inSvanJW2~cyAKktC_wo_dyKy48x1A@Jx91a=uEyXsK2JG z;u&LED#6eEpA7BL5=Y)hZEby`5Rv|ak1H98IQV0Rp(+&EK>n*e8rcyL@Qi&8PZKY> zg%q-h5YFcIXY*L2};C0NJP+0l;6Z^noQBn+sF9yKcvD zY|lPDE?I%{Vk&H9yAq~eqiT{_C%J^{**WD`r#SwuUUaQ0k&xI}`g7|x$ zb0>$h8#G>d76QfNkC`U75{I+<&k)Xzu@!CwKTEN9x9EWb#=ubS{K45>qmax-o;YK^ znui(?mS`TXlkK^e6>;G+8*b~4y97>1>>g-BR>kJQKjZ&g?~aCRg|ci%73 zAg_wS@-hx*hi2ojkYm3wx_iH|lJCIr@(7p~_JhP{E|9k+g7&Zn-*qR8#El9bgdcnp z13*|uvWypFu#9oyPdSd}Or9-EhQsJBTAE>iKxiP$XLyKVqjIPy``6yAQ+WnwcTE>v z)x5JxqFN9~N({0KL!c@ug!yp5AsLa>eGkj|GFC$mAyNSjierXPi1!>bRW-oO)z2oc zzg-XhXyMAIl*-l3_j%5q;6skR+J)#58VCnk-K?}7ErqM7M@fi&;Ij*Q+##WJA)Wyx z$1{}MbP=+3l$NMZ;t8+N9O@wl@-I-qobH2l7LzC6LdS?Ps9Xp86cwD|E@ZVtLB{)a zs!p{;)u%D}pqtd%;q2gJmVtv2DCkwm^}#%w9DCcYH|+K*oWGhTVlzu}46!OFgsSsd zP$dTH#f3t?G7P#>Lk7$6kMNnV@tF`_mEN#7lal%I97Dh>v$v(5)fX9V7-i&8>MM&A z4rgZ&cKJ3Pgp|CYed>;u>(>zZu4*DCG`6pws%srorZ@&?r@1l)`4#_WYOPbYL4oBv zoL#fvb&$`|@f}UNFgQD07$Xm|JkknBax1Y9*PI7+Pn-(Q&gL^UIyIbKiJ{MB*tCs8 zQ!u~EvFs8yLB~7dxON#K=v>04aQVb3{<C0}YY}!#^Wi7hsw`nI$77b>}+N{?Ic*>#S z%IuU+fA!h6RkLSf-_(vSj8B)1PDRC{s-h|7L3#U)=95QgSHaxfdOIgMY_QK64)D0b zY4iT;2TOg1b_DYkvc-87@yD4{N96SfO^wN={A6%;C`rq1!ul(@&~SDUTckgyg|mxF zdZz+r`q>!U<0S(fKH0=_2{&dGu8MJvxj_A_myEZtJ}YhMNx52GxHWVm;%8iGBjqoR zcpF2)bcT5OM7UI^S|xR_PPIW=%Gsk~W5rK0b4PD0vG1Bf>^sI?n$i@J<~*2^NH@~z zk*5FF)L{0?Wu30d+LP7%>-<)G@>-@TO=(I~n$D0yIJ^JxxBrxevrAK&(v+s(Lk;d* zv9#OO*@tsm9V%{rxTsy4(v+q&rRfYwFOdw+&OWf^ZzR){rZlA~O=m#iTlk_5C#qge z#z-&7VsF#@Hf0f5{kcTX5E2@1``{FZ4_NJ+HsP zOub93P`s%T)xaN%eyf#9Ia1dYz1J>{xEj76cNSIchnM(~nk8d(`c=LYuRrx{jsBL! z%6qjn#1y}z#RG>?*I63sKn=@E zZLK$;MjL9C0tcFG*sQW~D^0(Orh1hc%2{5UU=E z9ZbX~aQVXOgngdWlic8Mc-)H>wAHPf*ypDOn`RR{<7K?&GW$fWgShzX;CPuPwx*M& z#(Qz0C}Gpt9FU^aCR##{o=|RlfZ;w{P+jgI9v0jDYVS_2eMFivf7mzC5Ke1N*!0hc51RYwV!APy z!klUIMv+t_yD-zBwjA;?VPELgwT61-ZBFgi1t&MIK&JL>=Pdg?xSN|BRKn1(v=dIq zjbQ7X+r@@Zk$@uGDwSDE$=9ADX~Z?GT1*?Co&24`1fy6y_3Im|v2-e%XUs)5Wu*e?c>Yx_PnLPqfv-73O4tPB zsdJOBznvU$w_5w~O2PKrK2n{^G@Qh-)3pB2*H$&}ti``W?o_W`cLz@pn8>sTh0E~L z1}!3dYMqvU)cSmNc*xzCKcTzO0Iwfi%x(ic6r)<$j^dRYstz)Gdc9ogHC=Re&;$TfL94zo z$1M{UaSFQoe%->s>k!jr3EelhjRCc7P-w?qRy?7qe4cq~2QMIHhH!RJ(~e>t+~_w} zO@&J^7V}5S*L1ZM$FhOD?o&_U13Ck@(VymB)Vo*T6vhyRC(P8E&haw>FDXv8&>HT= zt96UD&uPhWuaUvLdfI>oM8gM;*HWnUuL~cqrHPN@h>WT>ZdR)hE(O*+qx}KnbnV*b zwSU9yx>1WRLh876n7l2X8cER}x`V2e)XC~ETMM6=n_TsDC0t-b_Ot_eH*PH*Wt%=< zjo9^7a@t(2Z(aVl)?=Y_bQR;7JVy(+j~*3H4;`DmSXhl-NvSFQg5_Ex*rq~D<+y|$ zI7n}otdToz(arR%wU9*K+iHNA6@rJ@@wx1F{&Hy~w!!UYERb5G=y%Q%q)q>ET0e*7 zP(K{RLRxf{k-zu=QeAAi=OKra7aoBBm~sNKNejvn(so40P)f_IPJ z0i4|`t?b6~S3Ok)XGejhYjp&H3eK)ly_mmDmw29%dY4+Ea)+~9pvCO3y(NXD4WI1P z@_f8Jz6r(q>`PhobFXNz=D|bKGq< zzLxypBjGu~89d0n^90$4I8Zh!Ve@s3tDjMm5ZsSHi6MQ*NJZfx9K-o?1QAmMy2{q7 zyR?^$&M0u_8FdtgI+DEup%g!2NsIF3_>Cv%tR ztm9$s{6b&_I9bo=hfLI|=?jt{@019J->nt*$dNMSCEt9jdT7R_r8>wqY?82$aLpJR z9igdITQ|@o4B?jvOyp06l@3egfN8$0wZ~B5bP)<@=$r2*M@23o@JF6rr!wCikXC76+g2>YX`UM3mpdsgvxSj@--TXLvef^oHgu2*x2?Up? zqtSkNNW=P!l0K2M;H@UikbA`@;VnHPf@)&tzhAu z`%3?jCb~^7Trotc9Il+qpq@C;h{zu|y(b^E=us&rF<{R=sU=#9RkA;Fid-IsfAFvn z!q93=4-Z&k_{RbdJT9ksaZ&P}53~xLJn`G_1!qTjd`w)Y6D~B4YtOtgYUoiHW zbf1uA2^UxtDuw4_IRDOv!mr)DrINz1fLws4vk}#4JxYdeMTg+sfU#0O`~pFY@Q!Qv z=u@$vu{{dG29OqdPx*OE_A%xbDOYC)P<`IE#UxiMQKooKQxxc;Ce{j>90fo?fp*44sMHm@^k_Z z`6g^Zk14=kJ(sA1VF><${2l4TSS$xOAvfJoc0T73Nx9z`>A<^NLpZxl8Ynak;p|{L zO(G1OA2>Tyg&YTKxvEJ3XNQ+ZRXBx4J+)p>flv(8j8ia^hIzQ1_Fw>K_ufYuMZL07 zy&&hplaihkU#Fg;Hbn;R%ebMD0RqrX)OhB@av}xx{e^G$%VjsR(JnU~I6+?6;hAq9 zsL;~PQV@Iu;$y>QyIcQ{#&Y_r>!kz5v*YiG_e4;*N|+>ClenRxa1}vgk7K9FezCPt zQ^gbV19$?5;Wl~>Z%G>Pr1(~juXr-~)n26qXw)5dCI2m3k%NtR^TUrC^)p_aI#)M^ zhnJQ}pxm7cU$en3?85f(Ck!TN1M=b&Sp_mBsk)|%2A#NR?ufT_m}kNm#7$`o>WXxb z7k(3u!5D??s;)B7Wsg*3=h5g&a!mA$P}9ip3TYfZ(ft%5od)5ac737H!A2Nov;orF)F>zIQ<7=2GrMzsQZEsp#A`gQUhgkfkFP{w`Xjc!E_p`v^gphfLyA zi3FYIS~!KYsOSA{^5C3BiQyWyfvZJ3KisBVojNfUTr=DCw_QjFny@Fxgx{YmJ4QLs zAvB4Oz~r0lD=F8Tb0o&X2N*(mEP2+$vPPT~N4V-!1Ng$D(M|TV>p%kpXV+Sv41tZf zcq{}rN<>6QuPhJX>=?T(GB~^C24_cxg^t2=T7LfF?6?aXYVg2f<#)6JWm~X9Hp905 zbv231h>g4$&qzSMskg9&&<&MbE~Ulc?%ty(076q9sVudF!P)VbbcPKjBzWLJb<-A# z9CQ%higP5K6XzKGN{GEAruVigF7_Ojd}Ot7g%J}2c3d!7?UV=PrrA*7%Sx5v(JIBK zI^)t=5Z#0c@Cw`SK3Jo8v<{1AynN>@Ij^LBbl_hyg&|EDyg{zP*%8#S+;8j|1!*af z9{a`Xp~)oaC=7ph?^XDJ@wMcH>2eyF03yQ=e*c4fF-ax2z#B3upY>1x&W)?x|D!?? z#V`a$0C*TSj&sSk-|2w^8)JF=EMmelxa%K1Rf@_+n@Oebx-YrmZ8;D`&)>Q*pDH-J zZUZZ6AIis2j>w5Vwe6vYIG8l%k+7GE-3Q5dh{?Dx|MCo%pc!~T#!Ac9Dv=@1qnEcB ztbM5|J&dM5cn$OqRYT!i!ya0p$Dn$s*Fh1Rni-N)l3RBhsIeirCpRJxaV-Kv7gs)| zr*$|cn9hg*4~qs>rT&=7!D{%A;1~hGe3B`~8Qku+5mI`b zd+(7dKnj4O51t@zj!7IkEZgwM4kRpG8@;)%3v!mi3M38#u`akINWfLn#(U=II36D} z#=+qQaGC?g1@G&d+$7hD!^LwE+Lt}9{cF1FRK9(ChJb{Gmc@q30bEBDRW{5I17VGkAY|Is<&1CTdUH;353vZ2xh=OO@0PUO>t- z95qJML{nk|z6`x>-&2DjnoWL(BlGvY340wxcW|}znx4WgY<%fjJqf{7(ISpFwr?e& zz_*W327pR))g{IHi>HQH?kF%@RLH-fL>@Zo9z8|D)gT=t3zPjZbi1B1c9JCgAooSA z-1MQ9a-i;xkb8@6dSa_bXJ-Dm2nKv)dvs*>A~o9|?$WtXk@u>>*%^*mUI=H0 zhV&ns+`dy8iocl7JnwLJ83qj4$fjOMwL&<%41>8tA*D739H-~GHrdGaEyJ2x6vEj> z9sw#g47U=S!Q=I08h)MM)Unt6Z>G&~io}#>u!Nr7$N|{|6>6h}C~8ximghWleW<%A zcrKKP!P)UQ%b1C-;=;=8fxh!9UOwMugNdu#pR+Bun*AW$)`fHc==5y%5FGOe&dOz9Rq5@ksD8xUVozGI#J?=;BUG8`d=NnP8a$qKf)=> zb38ht9jm;ct@h)`y>kDnYr~r3wdoe&e!`A>Gko8#ipodTssR^{)G6zTb0gl)I0GYI z1wF07UOTJ(h^2KyarSxxB8f*k36o%cTkSOKBvEq83&%TBcjPVMj^&Y3#dd<@)>PlG zYErCZq%)C{=r>fVs(MVZqnieQy{9QcEQ`40cZ~5cs#!X4!};LSxlq(#?`CRWL@C}N z;&x4LR9ERZCxcsrmz0D~z{~qtza(ly{4P~8sv*rtj#jMZ+1e+Avm*m7x=!y6%5KsW z97W6UH-Idw6}nLs`d!lW*GrOMD9ZAbvuR4xe85AE9sD? zG^Hs`X*xp+!9)r|IJ?rCcul{9qHE8klK+x)dd~dCgC{Lei*(ZZPu1pA9X~%5zx$c& zr|zU4j8p2_c(IcnJPn=nzJEn@s{Wp;Unec^`zO8RG&?meKh?pLo;{BgInZ{MC!J+_ z(u1cVDos6jD*9cOpQi9>PF+~iybzm*QMDiAPtCL8B$9|+NU8gEK^{I+IT>$&ep4>2 z(^jQYB82tw4{AEooH=D7%$0N1_oJ&$S~6a3(7{;Alb($qFSV5j-k#{fI1gRo(UH{4 z>nD{Pf4tdojg3oR{P!IzDSmpHQ)p}r#@3jV7iUydVb!&f`cEq#r6ebO#!pNi5mEF;ePyhVLQ#e^2;R#$H)pX?h@fuW%l({&22P>dYMw=ou3VA zh!u8>EHB{N&yM5Q#ZOgL7`8LIsf#dZPgqz65Z*mH7-zy+Q^FdSV;FIzHqkQ27OlE+ zBy3io&tBF%%4<}>XTO$PrxLcD2@3Yx22OSkx70IVP<`_z3AVd>reWNN< zHJN5vk8%uXG1rhPON~p#4rga<5l@VPD6n(e&$?WklleAb*01$hVX=LZn*9<(*zy^sseL)WWMCosW?CV7Za&!_Y0%^EJgdr6#^=TCzzi(=PN`%2OUto!M5W+eVhn{HM+-b5x#|bILuwE^Hdi=hsaQ@(#)6 z+IPL(TQxK!9=|(Pm0IPEtcJ*P&YE0fW<8`u`eUZ*zDpj{O1^$$0_EV=bpM?Xw9JEs zJ+eki4CzRrP5qT#w$!47*WcDc4wyFSeob6=)j9X(#R+L%(?x>gUc)B`j-$+G{v*m~ zZ0X^+d$p>>LGAKlaCY4XYYk=Yd4scSuXRMvy`mM3NREv`lTtf) z0mYFW}j3~$ycS!&q~ddqPPcEn_Hd-XGt0-CV$ zNx{uvQ@0ySuQU8Gty~%;{YO9)!yacWkZQSO!4>u%sRj7UA6Maf9uU(OtkAM%oo%f} zUmQX7!|v8f@mq(j$6K4uOfKyyJV4Uh{-dRic@IIImE`W9}epIU!Ida#15(aml`-nP7wcLH$ zgFzHYVb+X2vWcEA1kkeW9w3Y+@^s`nFf45)D2jBTnjbx)e zSUyVD)ZmdSE7g8j$M)sdvgg`$pzi2z86srDEuWkm&JLZ%JRIVIc)%r(J|i|F-*E?Vv3A>5gUW4@35F*Jw=wy}*K+z>w+pQUsbPC-pVRs%G!4n}_vb@eD|}Ux^k?aB$5*`(9y_&V(Pyg*9vIZgn4|vTSx(L zjdnk5>oVc;nrGx6-`gq>K)Q|Q;q?eyc&p!z2?FcjVJ)5hcE3~#f5+vN*}hBKzxP{N z;DH~7ym08S1c1W*@ROV%dQak(G{^u_<9SPyzx--A7q1FU2ch0GS7(W7@DxvkT(JR~ zaqy5>!W+jhup5lHY**z*V5 zq;RFC@u@dGYoez)hQD=kIJ>0qq7Y>OXZOBr41OZnWC&+RQ(dj=TALF#E+OwjD~Q=~ zI6L&Vb$7WZ+I(@5;t(cExP_B#dk7Z;g_-4Wb`J;@?dWe32mFWOw++|G05@@CZySGH zFTvqSv+apWr@mU~{rOia+<%G$Bt_yJNc&4OhYth_(DYKHZWP-Uc)Kag@+-A;SFx;BQJq7#j#KW@rIfy3Dd~m z|8JgvBd8GnLxr%NtpBiK5^eoNj+>!dhg$=PqPoFYI&-pTpc##cDwS9%qezs-p9x~C za-hdFg#Y&(<%~%S(PVA(eA}mTOqe}AgyYy1Ovk|J)k7=fKv7(r)D5@G=Mr!TJEVtb z;pEvGBcQ=t1w%>1*cd_JVvrD*PoJ-`A#Cm1Uz$fwfvI4ed%qK>aG(r(@s*^Um@&g! zRG++wAs8De9%&kR2k{W)rY{V;uo(=D6z>g-5ctqP=E+qJy-Ue88@EGp=siw~-d$0C zu21yjKtnh?tQ4an_P)DSLqBp5hqL3>xE}Io_y!a1TPR~gEok#aMM})s=sU>^zrIf> z8fTA3YEfen_N2S*EpihW08OHKTAOTecBGu7S2!a~g5ZSGV`K1&(F3F1^9*O_ZxZl6 zm?(C5MMCOIWW9f(vKvQPM9s*LFhxukPf8aY&JObd8aC1;#R9P;Riw4#gJeH+lXwqL9L^37 z!)-Ky{DWlW@-kILM#6=i`>C^xQ1wK$g#rm&P&82jaJT}uqXd98d> zmw)n^9Hn4APsr-vDUR}&BjPFP81~?gCI?PX{)Oh@SvmT)7i*g z@y-lFiBSY7HuL~vBcb3FP34rsS)$FCCnPY6wd|(K9e|5lkZSRpbI!`0u$O5B4-|_Y zeY`_v<{-5=al#U^C-9J&(m@K0nxY2diSV;%4=UJytb7x`o{dPu7@teXoo^pyqn_H! zK+EiLKDQ$shDAgg?)A#X>Tq@iN=70$yRp+GM0}RR*^vH z6W#1FR1c0BBjfepDv{u8gXTmBgh+W<`b@S&;2D0mzE*k z$A!dQHdr)!q4WoSGH%#^Kmc?ULu9Z8N5KdZ^}~%|2nP*r9NRo$pEVh9|;5##2N5Ley5NR@CECW>o-cjWUJ zDjJ5rV@OEI@;8;#fIEZlJ%@@%41%a?=p@|>BZ0YCFX0s{EQ@i?Uu?s$7+><<Ok7ImW8ROopn+K4*w zOE;;X@hO~lI6FGU5Ov}#=@L?-81jNYZU{FI)UX%fHa1;?hbS0VA!0_RxNq)7u0T$3 zRTH%nM%63t=>#7d8&VX%0*G5ElgExYf=bZlVtd=>Z;#6j&dxC>1p_!Y;C5f*HUqoC zhPWm(oU7VU7&w3*ME}uq-L9>C0uhB`7(Oc3%6!Y{d$fZmf#4f_#zGt0dnz<-xc}a* zCUGNn`j4wyl{*6pr!f__*EA+%jIY^csT>0tm`JQ}bT4`$Y$(G4(<5-3dDFo%->uCiBft6*DUq0w|j(81@h~@j@rUArd z*qocpaOOm&z0}SRp|pHbPBg_q1w!aNZ$_Dc;}zIv{2Way+W@%yU~S1G5h8l|t4121 zVPDgO{GGMS@Yg}K z%^ScDa-^MT2zIi~o@A|k&fx4q^e}&YpIUh>QpD1RA(UCBO}KGJ`LvL1gR}E}e?=Q; zV|6$?zbX+-hYqSLaX35s3}R-8Uzae)t$7;uH`A1)B!sgIw63MSHZXyrU=-7=50iC< z%?IMF98f6G)UI7vO2j6y2D~yOEwkA;QQza`eKwddB&&1VjWpr2XpG?;$uj)O3^Q}T z9KPxC|(VFz`m-ai8NB>UH{rF#q+LbL{wRpVaQ0M+)KW^4lI4Jd^=I2{6h~ zzZ_{QLXnDNL&f(a3@hzKfL(E1DX;TnHAHw;I_P*-F$}Ay+NiLDl?D4JttTw(09NsO zf~JPxa(<(#t6~RB?ZR^>uiP0DA^ru;OTqh!!*hA#kKq7 z)WhhYw<>D3IU(e~!{&mss?n_iY-1*%#)H@0tXi;!Mt-JH)E1pe=usO^rR%3U zUPn~LtCPXm1-+<_oEE>TM#*@!(ZcYPTpJUU|E9Lb%hxcC;A|+$^K3Y0M-lg;&PKh9 zc;Y=Ov5B$z8)J(&nZktVxTeR&js&&EF0bNqv|q28<`d}~CmS}e^yylTa+GHiYvV+H!e;)3HL2%aDGzkb};P?m+@S_uQ-De4g3D5ks7CDp2pU0W7{ z;Q5WBHpKU{;}ChV%cHwQf1_K(+ZOG_8xtp=oD69aoXrRH_IOG7oNY()4MHv3P?}0? z^-IF0(fI_}gaJ)8HqfwWa%=5Uk$oMS+i9YH?0B)^*CkBvi$WN&0M5?%P+|yU&Xd$? zYn>9d#7n#~kU-Z)O&+w#$XN!e=Cggp%xePxK)tEi!QG9S#MC6?0pkG2Il8gHjo5w9PF%2&@1W0!B zOdRfrq?7g6hc=kCYI()wjgoiWSNZN10m-!Js)cKBf1s6lQYnizbfaRh7Nu_cR4b8h z9~n%e_0KeWhn<74Mw8*&*(c+}naK_uR~F8#<&zRBcEtZCCxesN~hGnFK@G*z4C?zkw@W~ z3)J5n!@&zC{kE!_SMM6{jgMN+<-xT4_S*5!e;3+(Y5!7rl*kkqywm$1X~711^UOcBo|gw ziswY!>snjFh-Al13rrnL!15=|&=S3?n`lQsh0_G=qUqu$oh!?=M29wW#FqxtDapIF z*Am#5Hflxo!0}p#w&5Ld6{htXA!fd`A$k36TBE}L6EAArmplCqx2hx^Y*V47U$4C> zaa?CeYq$)g+;5EPK^eG&$~SBdaoB9l47II$UGulbPZuBv3R!9ZuP8vDQ37Xpd1JC; zAL%ga3dc%AJ-m6a)%K1Uh0fePJGtR)U0dryJV$ctqrsP!YQ2`Uaif;HcJ8abuYW_V zMlo7<*U}@{<=}yz>=cd+eVIB}dOm%=c;XC1r5&^Z*Zj(+w6_9&(Y=g%oWoXuTFmOv0&?v#rh2b)@7lo!_*|tK9?T)*&7Inui9a;LAR(7L~GanMrAvOjFyA2dyDux(B-Ewj8 z;g#aoJrC#-6n*v6IyGRN7IDsfM2p*2KB>RU9vAi~_KD*_gqZ8AZ;H7X_UB(|L1gB=!(?Q8YQ5xi z^r*nTxC*VR-4w<%EE@CVi^4kia!;^a&*AJIHaI&X-($}SK?b?tWiSZ}!vTasY&cP= zuB~`7aPD=d=;a1yhmPUPP?fLt2-D>KZ9-{*S7;;3v;8wk0j*fLO3UOqcx9O)5O$7< zey~kEguPh4!`Tt5sB_4j24`0(!9D(htQs4B?iFb)I>3c^z)yEcL-u|v3;*qyI!<&P zI!Qavte4@SS9ci*!=8Pr6Uh=RhfNZ%zWGk-J@#HfF8p**EUG6CGz#`h)=1B>INI57 ztk%D?(Lt;RE8F#@;F|tiC^MP!h}NOQBAD>tQXRSDPGKWprw#(J^%Gr7-w7BvKI;GJ zXI+kNqcg25k_UcL0nGpFZ?uC;{qBH-^4)$dpZ)%T3>iM-H=i`yM;1A@lqARYdOiqlE<{;G3M*NGA(*H+k7!> zAs!Uls$p`IDRX3{UHYpH{9atFn_}(k6O(a~M0+~UEr$N)sx!C zK}gY4o}$(wm4!p>onOdeH^$)XFjry^jX|J)E>L1vSt$oc_le*gjvY__ z_M4W~W6wyLB!C1KVIe*eOcEl*jRra^(1#I|lM5e}#2p*#mm|_%6q2OrU$eBD8v)@F zkPZ$Ab)qpi7aY(Z^W;;w7p|erEovL)P*!goXhcga8KQ$knoCL~N^B~#h59mhqEgXM zK9lHC12{~;fMXQEatTNz@89lMK7m7k$?y|#+iFj2QLG&O;LlMztyeC(orZ_nK zZ4{bqC`yz09mz)-<7ZjpzUv!t~2sQ#10r< z9>Uqt>zfBk1n+$m!r5(<=o!ih&Ti&;g|jQQ2M&&Qd|9dV2dN=~$DWl+ zykgk34=xdGCHhZzV|a^KrTm`?#4%K^)CTz6z3TvZaJ(v-c15{3?Ch#<4)oPcY8VPe zYI$`NahT+t0FRd(Gfm>wgS!zLOX1^sk5XbZ>K^%4Hk6+(6Z=tSyabjG$3{-6WEhT7 z!%sv&V19qAI8Wb6eF$S{8lHiDIEMGYOb{R9K(bx?OJ0~TRzu*y@P!LemxG&gpa!!R zFRCakO&&fXM0&L9?)&9vwtXtaLj1xM=pbVzQD;NL99RThM2&D*-+U_oC(?3a6r%u@ z=_oOL`nkgO@W~pppmqdvToU$1z6QZNl#*NEu#z^)Ce+~LNDanJ6@VV%B#y1$Al2kJ zZNN_v$}~VWB!aC5cOn4YgwD z=}GtLaz>pv#1T{Eh8&8No4&k3&XJp1MB@Kp-oD@DM4cd-qM}%(OU4Hi9A(h12qEu)g9*r7kEs=v?hqG(eSp~c# zb?W^|E4dHkc*O9$F%UY=*_#K+rH-8@7NMv}`T1Am)A@Vo7um?twNe$lHbGQyv>!;I z=sbE}-yA57p*wv?3xdA;V3{*qMGXi=jQ@}_Jwnj`lBvfRSk1rZNJH>|3_wp*3df6- z2y=r8ExPI*eWBjIu?AsWG3XBPuv zc#b1tv{A3vRh=5lTJ&&5X%k#qC0QOy)3J|KYQYK_6`DsHh#O@%31{Ic407uw5g0#1 z@M~o31Y6u|pV2BwFvlPnG@ott%%L)6D->>Vy_DVe`s?u@b0kUPahxQu!rN8GI!3wS_UOQ+C}9tI?;_la$_&nbEbEAXM%FfFG- zy;!_ac`^6p6uB@5<4-3OA@&*t@QDOf?#}J#GRjJnLRUBfHwfnR4sN5tu#R+wG?QQA z4M7-!y$o=W2#nHn-I^jiS4!ApQ1Wrug7hKMf5F)qqBcGPM!`}T3pZ#dJA$)&RT8;n zh~(>1##*8fQWqqaww2)E8@i!Jb`-DhnCKPlMMsDzgmcK}6(Cav8B~SH5Gb-kA5bBxrF_q!$&%}(TBtPF zI>#J!5Md28ur<{3fhEf8aVR(5E-#$gwF^!#HrFN?G;S?slISpwrt$2`K^eMrq<#$X^_#(_}zut{=2Cn4=raeR z%d^8tTBUXuy>SjvwjA!Pz+mM(i4fYJW$2DISA)5U5PQv8>LYi5vd%v0m1*y?9rsK# zIa&u36)5A60vbE`-i^A1l8x&Oyvy(9O?BD%>mbbyvd-o^jF^2@kkQtM+mwirgS)Df z*j$VApyiTC>#AoUCE@oYi|xY_niOI4EBqk)VyR6*D=}ruv^gFEOmk(hK00|-CHBf* zC2e1KG^Ne34Ki3ulM&r& zyum@=L*0(#>xP_R*nMR-tH~|b3rHC(X!+l)5IWLDlWhpCI%tS?#r8#2znn6W9wrRj zGQ&_P>sqhQfiw@ad&8U)MIDZp-&75Lir?Z6CyLq!R1)HMIgV2m09p)MN)T0!>lFj1 z^55Vp`|DRZAejHJ;qAi4&;UnKt5#JA6c*q2mPGf}y{rZmh$@Vrw_@O9 z@yjE)s;ID+3GNl4b=lcc2jhxeRr7Mg2J{AadEKS@5pl0N2$)~)2fc8-VYNMmc)e>*Opj=T^l3$#?MCO zb@!McyvxDaI7(XxZ6~z}&BV`o;dpoIAqA|6HCWuJQ6@YdbynO6^|J zCF7SzdKi?C39(*MgPALq7@Xbp7ZRO}u~_`>?58&7qzBV<{>cS_$eMOeOC(MI&8flM zRm-otqR~57mAsQ#{!T_&n$nb}G^Obbsln>Ck6rYKKm7CG{QbZF{r~sRfBO$iHB zl%_KzA=39~*f>~k9z94-Q<~D0rZoK}3ecD;?Hx{K>Gk!U5-CU0l%_PL=>ky<&dz;m z%6oc|&vHmT?x#x6034yLI(pdIk@ zrrx4f$eUNEx2P?O^D5X6ry|uj==)Vy8PzBmuQs)0bi^--|5j^H>|SNnl{~uSRQIii z6t&a48SjyLQN3`~op`7Gpf9QLj>nJ3xffmN)y50N_vs_!i<6b}xZeYl^fT zbXK#YIk_evpBY_fSY?S2iA|ieY9lH#kW8;O*VZd?ZAoZ5jSa;u-@bcX-s}X<$mH4Tsn5H1 zCRV%^Y`B1CriVV)~mOHeT_tiJGT4~b#T3oo|Nm;d~d0(TYVjr07y7bqP zhgOJVB@SoTT-U-?ZryD_vga_>!>xM`4JL}G_VGedwyoSp;+K}nh#Y|Gi5GO-m&q2| zdabs%NL3I$iv8(lT2PBlA`uun_Fnbqt@pHaaQ-qawOI71_&~T&^8+~e>YM%A5 zg`XQV6E538?cV-C#jt(!ZR_^rBde8a%y~p>tY<8c6VUqRkHl*E(+g_XDb!%r(nl(C z3X=Q2uYA-NcMqPRp3pb63SO{{ofd#i4H&1@uUJ~Y(Q*eU4eAI}*gn}QLZ@-TFWUlk zEO5v~LHOW02Tf3!b#DZb3YM*XPRo`Dj+c|gkD#yPrfdJ%O6)GM^4dtKIHwmEwumTh%D*?E?_9L#H7z?Ep~kTd97rp zJ8*32S}lc!8!+vbA+jZy!x5qdJ`@JhcvuRf_$45*J-JS`{q~z+sBm8BS?wmFa`bJr zmTt{6GH(Hzgm8AmLShnKXx>SnP&>Z};Ov@q6s+G%8>&dYblIU;+|*{qQ!~?-*Vw{{&LHg<8XGJ`)Oq=Z6lHF)K@{Mb%l<= znO}aD>J+z^-q1%p7p|6U9dW#}NqL{c*?qBFa4l_a3D(%9-t?@g+}7BkmuNqpC@*|g zlM%w%;apGyV&Rg<)P7tQ{d(F0r^DGTStG~6eqH;8GFvr>X2OlfECxHA-JWkWUV&*x zf0LH}XTE|xO(L%(dFf(^Y7v|rJI6yfyY{yVyO!Lr#~s2VIt`rNB7?KTlGkrgm+xPg zoV`#k@?Wx~fe46ffba&3@a(87f&adR$v@@_T3D@mP*5YSy30p!${C*8!3#xL&}(lg z%f{WKmW<)P{9279yS#sq@)Ej6zIp7p0Dy?5jE!)7c!p!gG-}!PrIefyweNc^c>hCV zLofSDKw|BBDj?w>;0Z&kXI@s8(CTLKoB;%$ddC+EX?UKFeIyjLecKKNJVb`ig9$^_L;?ILnO>!=7gaMGNZrYr@xJZ{1 zxG2nsm0>S|3&)B?xp0CZjNlNl6B4&oPwPU|n$#FBqufMA$}_;nG2!SDFv{BWygZdV zDV15SG|}Mf$V0I=#*$=|=vk>fvS?&r`!g4aMX>RrLWO$N)Sn083rOYAHo@7g(@2wz zoEjF9f7Nafb~rm+4};A+?vl7sYmcA~XGa&%Y!v$a5Y7%U;nwjrNZ;Y?Xb-9DbZeVG zo30CrUSFVuM9NEw<cRGPIB!KQ6g@PXJcS zNR${xRDjiJCKtk9lo=0;(;$Xnyq)?*AgdI47c_$6I@~b^k)(^HRX~MmtWEdN^hZqK?`9eq(e5o!jt^G?Hf17s1)}5mFzK zKZ3Jk2lFFt6OECGKch^&>Df`4J-NrrlL*6VhZ*F)0i4}x@f`myIJ?~eoZaxd6($K? zI4nXYK38ydhm!X{Ed8!K2dbpFxkfx}JHJr8L`h)aK||7mQEV`F_Tm8Q9Db4<5zbq5 zkzZ5EL$Y(CEc%ID7Ov8_HwX{#6Jb>*^%P>3IRZ*jr(UGA(vS%4MX4A<5}wg#x=&X7 z>`TcB)5RH77h>!mz}X#^?W}lG2?rV0&j;m#N$v5xY@}M0saLN=h}MoOecNy)eTW{G zj+qv`y&(I68#n|Fn3l;%|2adZjgnkktOt~6FB=&pWBFvVlJaaY0g0gGT*ZKO?jwOS zA#cT56Rof59N_IDufAjCzH!QLzGtwc-)lgCjMyPCYn^w;p~KQaY~}NgY0=Le;L$t8z|pO{6X!=YEfuh375lVZ!2w}suo=( zD$0<o4|RVRB^-NgsG3TX2tsJ&;B5{5ZXq`THPT1pG0q9NB!y+~EMvY_GZ`N6`gz%FP zK4hYD8HRf>w#QI=pKhO)gYyjDaTfT~8HR>eZn%hr_GvTxELSz{sFDof(N#B8#ywO{ zRpX}z0GH@w?@@BBl*cJhfT}PDYypuu$M8D?#wjepLjn@FyY^=3HZ7ziysF&?+2>9$ zHqYLG({ijEE5_=J4c?oK${XzLf`PEB&nWo{O}x25tiwy-H{bw@jesJ>#tGyY7CXA( zCP2i60~Ge>1EZ#hMWp1thU-};R!;zfy`-G*_P&LB`Ic{ZZ*cYc+v--q&WgfmOpROV ztDGb|(-$bYAcrSzka&}O`rB1k-yEBT<1-TUs@*=Vmu*uSvTX)Qmc1O$u{k1z_5np* zVv`cG3?eLHQ<@44Hq9TIQusJ zN(D_dmb#?!4WH0=d}a?Ca@#PaQH&25FMENK7=l@9<+Vu8QgPB}dKg$@mZ2tQ+fE~! z^&x0G+t0HJZQiOZ1F0)@C^pj>@1s+R)lgzD(6S6=(f0*scb&>R9|{bL(1ns^UrZ{s zPZm1-UBt1n5Q>l^y6-i?j2~}db_(+01*b$f`xOcxD9y#I%k6@hF#gwn^%>4k8(j*; z_I*uRq6x?qyUdY_9q%z3Z)L~6qFSFQgtIGX zcf8zix&$28M%Z!uvhNsQj@{(IQ@-P{RHY%3TeV-qq>4^ep;T2zyNYTHz^p<5x2Wa- zLM?{j76-p_oU5oM39G^H>%~%lr!D|_QzKSHU5kFJIvc^+c{jt$0~V#QqSmQKQ-g!y zeid&G&MvRbiGsE#8n@CZ$7eflJohFAd?UxNc#~aT~zX9fOS!U8YP2MVfko3 z(pza@tPN4~qO&Ejvr)t9RF3CPfdXFuvH2t@y1`n=U(f*2tuU%gFTEo)U zt}aPan$nb}G@T&{&hFwr{PExa_8iH7kOXIU;SuT6 zl%_PL>93FiG^P^;ZIA0Au00a2N%jD^#@~|E<0n0mrW&j})mdjWaPj&Y6*PhGSdPv^LsHvxFbG(fIt#K-~@JaukYX7f; zQsC@PKT)8}KHBFysizV)2SNx*Cp(o|+kbgd$HVSNztzshjypwX6XEolc*)dT)CxtF z*WE2@i{cz}7DW`n%Ef=9t7;amu9MN4i+GvnlvnOo=}26N)yv20^uO@}5^=2N`bj}M zt*NEfL03XQ<&78jY(kjtM896(s8wx?cL>y)sWnBtqwkS#Rc=Gj-Q z#YvlbSzvf{!MwtD>Yc7Kq&_d1Z-9qhGE(3?n}l0tB~_=v(|N}!pC3*!_M7^`V()dX zp|0s0=xrrCpLtqpe#hbLqFInG>s$lGi|$)b$gR(<%-bm*wo;FLR%WTOvCzKrUS?Q1 z>|EQeN^Qhpn;DvKe5hfAK1(#3-Rv?dHLSd7pB)FWtZP`WS|wYFba|uX%!eyK-l3(L zt-DvvLQhz)UfHA-Y_OH?J-9@R`L=(iB?luW3wQ}_XxdR+yW>vHz~8-B2ix}yrVaDk zsJYf`K$-S8(?0s_o|@l$2U|4sMxR6L+FxRy=XQ=48^WMZ^ValQ`?Pdpn{w|~;YeI1 zh9Q<&m)}qSU4*?YUM-$Xc|fZ>UVlr=tM8o`eA%2%t$0Gy(H~x=l^$C^5fqq^*?MRp zpk^B1q_yymtPwcCJ##g8{i$`Tr*`4&oV^JB<&9dOH+fDlbs1ZN&v(z(8rdt#wBYC2 zm$j(ovFF6|Oq*(cRTC`$+q^{rZDe0*Pp!We$^Brbz5=cI@MEc8yPj(EN1tk~*TC^w z5d7BrS}#XCh5GS^*1E`UZM`NXw{F)u<9=gQ16oa0s5&7Z6&gNS^|a`!OSXKh!dy~h zaCWy1m(Fi`S7#B#j$L8`(#f#}AcH3eb?xoQOV)^E?sqbp>sp$MSSto=UD?Mw zwF;RXtthJpDjJa+CQJ1+g8|7@>rs-(m7mTEowo_)dM z3N-lm39$)9d3lrcrq3uXOkTf13q6nirlrSd_7g8?Mf@#8q=GPd`QutNHhsRZ8x}t* zIZb;|@DMW=XhAM2ep7FW(7_tGkW22Ir8TyXKQE@g`JUF*4VoZXu6b5kyYw+tGH;oZ zkqamTv96Vr?C>vwKH2xZR{K4@KDlVMI634_t&G0q4lN2sfjBa5x|RcP+aWD%+e5CF z2=v0M;{22Av`&LEFTSoW*M$Scm~S2=Zw?y;XJ<*S;Ov?S{eUiDGc;qz=R(kc=L|vc zwz!GMo(R+ll@wa;rw^d!UOoB5FF*Q3d=_gQk?TJTG##3jXAsR$DuctmQ6uY}bro)n1M zu)D=BHewigK)$VAM1S^vtAi6}NQj3HCs#i$JOOz4&9~B`A8jAC=cbMZS09*jW@JP7 z%-rNfMU`+3C)lZ9n1dL0!}G5sUw>OtN9`_8Xk|A&7YNgIIR%W0xKS}g=%>H^CN2}N z$eYH`(AsUnGUoT}ODcvs;yr&pBzO@N2wUX{DvMfg->Go)(i>v^_Xh;4vBSW}P)c%J zxcTG@0eS^d5w{{(hkFDxKrwXm$gdJVO+uk}eJK~ve_XJJETy;SiIl!ohqJ@=W5)EF zFmPjU<&v$s3yWc~p>-r|sCeK$)Q^zQ6WwtI5{lt5sGgWYQ`viT` zv9BTxdB7iY1+aiM4j8A!>3D>lUuYbF_L3ZtMWW}}fA3L}1t~($p~?@w3*qdhoC417 zwKtWezV=oCXGh@2?EfWG?uPCY$Wd1W>JAh~K!HExCI^gH0x@l#{0`zfd_X*FLNGv4;o;}I)krN)e>i}%Bj1F*@QrZN)er*Nh&M2qxB~Oh9})ukh;)SC zcB3GWsezaWGjSmB_NG4K26|31PH6ddztSnr-oHrAz%S#JGwL1W(rKu{tktV3{(J?Y zqw>fRje|%h(E~bwH@v2+j0cBx?3i>EOU9mW>Qm`ByXea1EdpO*pU6*{ULypc0E0+R zh_{SZP)b~?!;Hc~{%(9%XHj}|ZvPKLVfkv05JPZ|?{1aHxowzW>wZ3{`hCqf^$@{u zwa6It#jX6IvD$-Lqxx(V!yV)0@lc46A!qr8!?G(iJI}f{IdO*kK6xniMuz_K1_cs- ze4J^Eg6Aw2>KY#QqC)WpHS%Xn%y0h}GJA^=D zotz7PnbCv8+5M?N^y8vJ9 zKmcdw(1j=}DHLh7!`Y!BU+$5ibr~Sr96K!lT!$^h3;}u_ku#;&STQ3@j2h1XlN~4v zZNd4H`XHtu6O*5Rom{j^Hyt!l5KR+jCI2m3k2^4mzcL59XkkT3nE;jPB>4pc%&VK| zVbf&^g$_~=QuGmb%iqB@Y#2L-FeLO0zgA?pZI}(5LIsfosVHj1C<)!gnLhinJSJww zL70g4FI%gpS8SyH@ET*laVHJwi;V$0Nhllsy1+0j$Ox#J3-!H(O_DC-GQ@xvhS6k0 z+z2l}?p}FbT+9U@A0-UDN-pm^<&_MM&_Xt>h(vqLG(}oeEopFebpNK_0Yv|$CCXLl zDISdxG(%2&1PV=BjS@3NVyqp(E7S^=*+c!_Bjx3Bg4;h+?m+V#&JKygd0Z9w7byvX zBT`}*BxU4u4rhnB+uxczcu*cHv+m*S<}VlD$j9;N_brss!b9><;wu|1pSM(eW+R}| zJa|PyK-;|Jy$>qErvRqw2;ctM4|MoMrJj%w24IEiTp&ftX(cUX@;MX8Fj&%CVX9&BV`%b%zhU^fxbee_KTzk`!E z^j6wL7e-H2_tA|R^JQy!f}iG~4utZ*JNM zh+GGA@P|JH5_kgV$&Jt=95 zoAtnmK{uWS1tQ;Z7&od#grn{5IBR4{vW77H6{tyDnXuQ96@%35_B{hku<_G1=Ee3f#V-BC4b+sBxlKg?$Hyfw77xoW z`{*3UQA9dLUs=z*qHF$#fNt#TG!N85d7mY{J9nOxC zFFYr48)V|B^~VcwO4v&z?g%F*&Qv2gGWK5W<04T2_=(44*r<>{S>sSVLat4LK*3-> zv4I4?d1t*V^D$;o_(e0ifNP*0N=}#|@{W{rP%@5;(Cxg|Qck$k(@^rb3yq=6RE6qN zTfT7&hmzMuF$tEkgISRQ;FbE0RtqUffx4JYaW15}2W`}Tew!OoXRGdNB&O{z=!)&F zCMw~Nxt;T~7YSREL=^+au2B+yIp$`lITCH8PB4m^$paXz;~cPhya9@hgXZki2kawJ zZ6%1_qv{+Kv9_tftd+|uuFRx+mFNUnC%W>9y(=WD%z9YeMyty0*^|!#5eS>TA1}0* z>CR2>uyTIKuXErpdspi-Lb42EF2`Q>xtZk{2%f)2_iM9TYV?g@$S6^=+;IMcpLI;I zJeyGBmlxQB&H{s9%dt1_Ik8VIUT~rr`VeCX&F3R`$S30D+i#X3vqgMJI8Ynq? zQdb6VB>Rq_m~9g|GHecpA7tO3=SIqz6~WoH2(C)F_F5L^1NKszUX~q0oGUSuwm_>* z5MHfbF`4RSh46QAj`?JggnfH1%LM8Ta|223+J&V=G|@Fg_H!4Xu&GN?gPmQa#*_co z-qrpzb%pV&Tl}J%?hn}aEoNJE(S@q^h160r=ZMo`44bFwLj zL1IFuLQ7!<84{3|LMLO$OJ8o^=?eo)G{$JuRl483r@fR~;X)J&KEM3ZJolXQ+;i_a z&;8x!T-pnp1s0!tNDEKfSgm*&rV9^8n|!Ts0H16Lrfds06MGNuA<`*x7dwh6Oc16;PJDbcB4;g@@C}5P zY#d;-66PK*j5@~`L~(@K;ju!|jy`5g4Id$22iI@mtI}t8YcDq7f3hyZUYFC*2`^sjW;sHEeMVxyIud|!m z2q6*^hO%;1)wcIPxVAd^+PV$b)_z7L5{X2Kl&R}#SHJc4s%5Xg^V%D$maiZZiA17A z%6`4_`;Q-e8cNFuZTew+X+|UxiNvYM{}ulG_tu4yHjO0=nJ zkw}~`l$Dj0wYId_IgT@1O#S^vgQ26nefDWIbeQ`GY!<84Z03kWB5^*D7trh1uR9!$ z{{DWwUhj6hywuV4>sUc*bt*y{agTXL3 zILQCoifoMAPH2`JA>vhYckrnj8Wlf^h+DZ*LzO8X6lLd-CMT z*zAJ!h&;5jvy%igaR9A^XxceWYwWGm_0)Fuq7X`IruiWd1WXXnKp=ojkcnC_7{n(w zp>DA88JjUaKd_FF|B`?v4xp0IN~OMMZSkK=57f$js#%<;dH3hWves^i8fu9kwqjDu z%*)C@JU36*Yi1qI%!{xf5nn)K6>cJ!!ZL#itGF3$u)K1jYZ$CSG(sexi3GEddsejl zvs6(lldENNm27{tEKeiLRxi$}`K77L>#&(7ohFXsTmtNNyYvZVUQVZTx?zCE9*+lo z#a2uT^o5S5_1GO9F|XJP!b^!b0t%o)sZ=74VfXa(T)up{qoacfUz7}n5w~y#AOTGr zKvDY4mN$zUka#Z1t@-eruCUGe>VeuN3XLqMW@W)2#$J=d#!WI$$Oq4yIdkO55k!te z4TX^P_4S=TefsFpqk6qwdL*DP1n}9jXPcXwp>EQ>;BxHPF`Z5)u`jg2MWNMd;nmjG zCee$qfDuPPkvXc>YL!Zrm6dhp&Yirxyz1&|$S6w{A3b_>@7_IJ5@TM}WMo{rbm_*88)$Io(4mVLFCy1K z5T87Gvb3}mw`dqeMMW1bTre8>e`63Wpv=alm71EGl9G~?l!Ob61T>*AV7837?edz= zMOi9joe<4M3QcvNcje)F*eF5yE~S3dZ6A2XqfpEs^aZ!cf`S5QjTBL{MoHnGJ$o7& z8YJeD5H*BNVPPR;7k7P$eTms_c6K(xTZ$JNpjl&MQ@8-U0$HAGx=8t0?L={S7oXU z!;=aqbPW-L7{Cox;)F6$gMoO%+8@C)Wd_Pb4GSi$lMtf$`T5ej!{Q0PSY0U;3M_-9 t^aV|CX=y>6WBrb+z~k{q?2E8a@jpfh^v&joRv7>Q002ovPDHLkV1ljU$65dY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5344c8700cdfc297ed1a5f374af5c962896e6f03 GIT binary patch literal 9374 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..748c252995237627be4109a08f5123a6f8a88922 GIT binary patch literal 2018 zcmV<82Oao{P)+LDwmLZ@A15kfXe z2!TWdr$kC*Ig%nvmTbLjJuJzRWyzB5IJPBQmK1xj!n&B-8Wf&*Sm9)9IX@ot;sVOeU|_ z`{>c5X0zE)l24|aH*Y?D`t;eeXVq$TQ%N$J820P+I#x|dKA9N#JL_IlM`Y-yUpACZ zociG3+S=OL*#R&{U6Xz)419QY*wWP5Sn1fSD}K-dn8jfr5I8tENG6kui;Ei@8;>79 zW}QgA+wErUz@ow7aHLYHk&%(%;bEMqQRBf$Q7`;pP9zeSE?rt*U!R(qnxCJao143R z`!-8OqT%x8%jA8rSTvi>kw^pwP8Il*r9Swlr>BF#;Mmw$I2Yq&112%jNFexkG;AoXuvzOa#PYF`LZ>dmQ|Je>56Z z*?;2H3qNx|`OP%X-0$=GK%UR%TdfvHm&>)Zv_u3D8B7Yy{dT*ZXi#(i$x>JRLSjh| zPBI&=;tc^coMMY3QY-%xsy_I2ZE7-}>PMrYbh7mS;#YbtrSMBFN%2>!)eWVM4H@yX zQrX|%Zy&bXhyT@%@)pyzYu6shq>+&ko?8F)`M>}2r@vA@le-BoG+1%aT zt!bZiV2H0g#EX4wYQ%eA;U;W6o0_O;G#a8Sn!M2UfTZvnOE3I@ESJmCXmo073fP50 zAruN_vsvhtN+pi@d_EiwudlCHDiz!!kqD2H*u`Rz)9LAH8m80fnznbau&~g1gF#5) zH3(;}OSPE@!n`0X#7=kw_$Pqu%TF#^Z6n-=9jQ zZr!>?1kjM4QHOiv|y|=eV-qY4%v8=AH9*12)h2L2E;0L7J?PkCS9*j9Po6TG$%gK94 zgP$>7Ucl(NRJ{UndSw3cs=R!B2|AxZQ5E4j`LbtyV-6 zILUPYGxrk;Vy0(tN375U-n6yZY@!oRi5rZ8kNh=-|HaZ3e@$Djk@PDoD|PKFkENw0 zDp}~U?!yK)M?!&1Yin!br$WpQO!H!#$2N9y97g_{!vA9Fg}?U2*FM4)Pj2G5PCWQ= z6wid>gC9|YL=*i<&)CVprSKa|AN)ocU*HH^H;g_;H{+#aB8A^rUIPE?A%)*qOf26- z%1WY*>c-yA{zsqu>Ia{``Qr<3pFRIwnTtvMXiFaLGXkWP3KgRZt!nv`;bfl zs!*g``Y9PD-GiT!Q7?giv*!=Hx}A12I{cLeqW<{xSGMA9uGq8R)IRkwzRlg<-tKU& zX^b0<#+LRz7=N*MAo>vw#vYVjy}IHToPxpNe>4RG0oKg3v$IyK6_7xE`0yd8Ua!|; zv4q3nOeRCk=;-L&+#KtPd-v{%4PS@D!6g=4Tv}UOYigUwxm=D@{M~MMxm+eJI&ZJ^ zO4Jp9O^bl0w&#oB?Q}Y4W@c{OxUsUbQmt06UcD+l?7=2b2#e+A<$OM$&1Q)Yr~{Qt zLqkLOv|6nzSFS`Nk#@U%{rdGpB0+C-9twpB9hTy1E*OaV&`VF!c3`T6-mp>Y5H zeV5BcZ+5#qpU)E|6B84icTyUVdf^uWp7`i*Y-}tVjqdO769ljaJoP{&r~Q6E)GL(= z{tq5JfHCobGi_H_S4*W5&GF=3_+WJ2Luo+zAE;F1mwDLxjsO4v07*qoM6N<$f|Xzo AGynhq literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e9a8b4b90bbd6013a6c21aac0daabfe9f738d4c3 GIT binary patch literal 13173 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f2e10986101619322cc2c2b46145951ba66a02c2 GIT binary patch literal 761 zcmV<_a8cQ|tJTFQ#jzkXTnq_jg^I>LLAa^aDPBb>Yje7+mgeaL>-d?Q}^v1y7Wg$?6>P=iEucK*49>ZbabG-y5Vk4eU(qa$9I z#UxpUpn}IjA*e?>;z_b{xy%w$YRZ)a+}qpZWF>KF?(FQ0Q+5S| zG8vf7W|q@tv+?`R&JN$`NlL1>x3^rWCl!JU)J7pF^_sGvH#aw!nwsMDv{)?2=ku7J zp2o(;21}Vrr7$!!gu%f<*zI;+CqYA@kPuX$8VW(@=jT~6l5=Zo3r3?6-QC@soRpY! zV<$l=F{$rdUS39LXD4E@826&|ok&oDnkWQaSy|x(Jw86h$jAr_+SAj6-rim;EiGYq rco^H;+xJI2^`Zv{2jYkqJR1K2mMI$b%E;uh00000NkvXXu0mjf*t~B> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8aaa1e22110dfce0cd14021b61af275cf0dfcda7 GIT binary patch literal 11570 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 Sk%0F?zmb<#k*bt13;91!-SO!F literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c71a51c7e093e288155f2d10f0067bc9b66961d7 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y^4(>d6Hq-CI6C{SRTr;B4qMcmsfyM3J!85#ng zHMNLwm0fVrgTe~DWM4fAX>fV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..75a039373c8456e3b7218231f8b7f115dc8209c0 GIT binary patch literal 1035 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!A9Jt)N&79D3m6!fFL}B+hE&A8y=9#(lE~0@ z@uz>*wY^8YlNYy2GQ^~Th|r_T|Rf3|M9PP z_ab8END8KB*ZaSYy?dk9D9^sWI-xcK_~hqDtq(Gp z-7ER~@!pQI=l3GcJa^|~G&@=H@z2h~>sKd(*jsMh`xY$V@!@!&g7bz3o`XzAEZipq gbVfN8hrthK6-!>`wSnB`z)a5I>FVdQ&MBb@08lYp4gdfE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6588049dae3a13d4fe5f9654f3d495d21800a38a GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0y~yU{nIKCvva>$@J-4Z!$12xp}%chE&A8y=K_uvU79{F_h!1jfooipU_4eCi*X#DPN8EWOz3^?B^|jYuZ{(OU zbpPVL*mL1wfyDC5nKJ$E4X$gS>CSSUC1^GO{Nu9Sy{DfVt-G#$KGkKh6y1>R(!OS!UjO^#e*R949yhCkQJksJl4$bu`Qo oV6;?ZDsp0ZGAc0`gXA~k&l!8=zhsxc046L3Pgg&ebxsLQ0JG-QYybcN literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..40f5bd30c1ae07955a459b3670fcaa7d9a986b3e GIT binary patch literal 2423 zcmV--35fQIP)|BBI000R-NklY>$ZIS(Zri%ilC;7U9cdWwgDGlQKu>R# zHt2u=uh;E#Sd!w6gF`<5KG}Z0u(|Dc(*In4y|Zo3F-8nA3>sivpQTb%06M)@+Cj(V zv}7b3eho23hFcPrs#xJt>~M7W!qNcbC@nFK8g3XA+*oidaPR50qCrRdn6h8LV)!|T z+l)D8G^AolOHyC?9ZAhDmk@=~~mlgn9O=Yg&?9hb}1+@|d67M_|l@t^HE!Fcx^ zYcD-wq_cF?x^kk&S?Z^LAaymhe zEjNdIk9ETuop=;Q@d6_^x1bir9hP)WSl+#bUlYG1ey4q@*>@WGn)rOau9(%6{0;e^ zJoJ-397!sRl$995e*C;(7LSzOQCS9~d=)*-E||vk;k{|xNb~q8EIL84EK>MfL7s;BYtyxVEC;oEPGR5abc%(}_S?^h$S#C~sm@09h4QPrq+9cIUdDbq^84}Q$I{YLcEN0WWnCmi z=->cu$fO>KDD#L83TMuo5fA+w>p^LSjx{@jFYwm8OOsu_&{URx3q721KA$ByfiL!^ zs)}Ysl@TLGT)TFS!ILLX=FXj~%_+pA|4R0yCuAVTq`=7S+qZLbb7d^bEt<$c{}pSx zFQP9ZucU+dHJi=*_wQ#FNo3~o<;zQ#E)`9$3isA6S&Ti{wby&;R&!0cvvuBUI(v{^Ezj}%e9Xf;q3;=|lN!d|izqM=EvT(zO4J;&C@EkU`ZQHhZ@#3pjud>ncZ{NPBPoE~yyt;e$?$Dt_u|Vw&27|0+qmw63R#a5%-Mg2%mXwr$wwjt6=5d3H zO4)Yr-W?nqTu@LzjKhWv6C+Rs&g1#2RjYWVXca{tQ%jaCIehpqZ*iVLE?v6B+oMO1 zuGD1b&Yd(E^Xyn&UXBHLnxOCs=aZ6>m@FzPN=r+_hfkkA5jYW{HfPQpJXAEGK+>yM zuV$n7@864M7UBRNl7B#h&jh$*#}0DXq3k^&ZO}l`St< zhtBou*Ciy9^7!%N(9lpaLhIkZe}CY>fz{R3)22;BhqvS%+)!N>66(Z>6A3RlIXOQ+ zzpSi`rU5|d>FFE|l%I?+IcCfl3NU!^U~H0N=}WQ}6&1zrg$oxj0&0g39}Xq}6S=Oe ztQ<9J6y?FVqOlrofZbiYb_s>Nc=3WtELyba!Gi}ZN0ZvzxN!p@o;!CA&__o{Yr!cv zKYjXi6mH(UDMl#C`Sa(&D-?V0-o2opAn+%o5)l!>TB^8g*)pQwl$ktvGG{Tq8I8ug zyu9(_$Fqb-^x25i0qc9i2x0F-Ydg7#U_GIlp>J+MtuNQiaYF?cc=u(fAGYXa`oqkprx1 z$UmfZw4&fBF)(=f^5u*fGZd}Mr%s&;4UmHV{rl6J6p6e59nqAEQUExK0Wkv|^oxs& zd885~4pVV)aV!B(K!l8gzkU1mxwWh1>({SI6Uv|@K0cm}*n&q=#wvChJ9ezT5vY~3 zhE&3QPz!4*+lB~fsdIp zXFh!RP?XVREI9#im|DMnJ!j37DN~rlD<%nK!h{Jt!Y;%}u;hx=0Td=*y?Qln+&Ih< zH6Fs>1gL1dMHGrAKnM320IW@$HYr*H0VQoFc#VvVB!Tni&xhfZF5IvGle9r6EeR0V zuU+l{9d~>53^j!PWXVY8^j5#dwT~=oW*T=LM@_Xr2V_tQY6h7@m^1;|p_^l4W62I7 z5dghQ6)BYvxKtE`!42H9>39wcEYO8KqDGpSAra&hhJa3Z%PaIDGf6SYm4k+QLrCNc z9ZCh6vtw9T7&=04Tmoj#o~>x7C(wcFH*eld&1hxl9XDVOxC8|}Id<$=eSJMN=GLww zjOlFLxOnj*Z_$A*@Qn%q6wWoULO8;OfPgA8AR!#DIDi7TR|pc{xX(dC5DbrS14k0^ z;y*#5#+Yzm9n8{HIKY90!-9bD@Nl_MN;q%~%4C(bq#9G;jK-q@SO_#p2$j=lvb|TkO6E#o8k`&V2I+8FLWpy8!;f)Z1nc+TU_ET=a*d*5Kr+? zpx7J`REtj)p?W5_Z{N-_L{H0(GzM}WD2)Vh`m|584)yJ>{0+8S5Fowh%QpZ3002ovPDHLkV1ns8m!<#! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..739748b3e27350fd5c1c561bc944ccdfa228775f GIT binary patch literal 4696 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bfde93313f1f18a0f3bfa0fb8913adecfdd8d8e4 GIT binary patch literal 6160 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�QP`C7Xn9o!Q*}u`rp4yjmn+nUz;Fy4!p- z^%DOS>Nz7QC)nV7room|sxG73&C1QGf2;X3FDi=Oa)l}P675UK-~R5mn4=-22Y=O4 zGS1j;&Bs9K67TY>e5T4jW}Nj}>fy>X%tfiAV=ltjjGT1jIcwoHpGl#`W=M^d6Anbd z^p>f(7bdAL5SK=ltAdyl!E<8MsixV}H*QR1CL(?l&akenWhh??{rG@eKI83twk*y# zvSX#j>R4D33E{HMW~6hS)bw^A(TL;n$UmI6<3#>K2II^GXWu7dm7aysddr44)m%~H zn-LD_ocd-7`BG2LGCa!C-^9e_cJB`kW2b<48rGFfw=jx<`};@E^i^YOc5dl=_?i-j zR&LJ!gv@+-6cTcjKcMa_&lDAw`IeN5uq6bA2jwrNW+5Mig{gzVUOt!?QmDD(N%z5kmxEY&2>r&-NPag3QAQ@Jr zLVe+IZ0C|4gIg(o51L8dZDe+zHn1OtMS?4k8|jNaE;cX|Kd(u03vsV{bFMp&i-5zodBmgF3dPyWJ?XMj zQ&XI*A_2*LtKHP~eq>1Vk)l5xR&(l8m Zd)#a7pjs;6_@^H*F)-7wy!|ltzX8J-YRv!u literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..39882b59634bf0fe1be3b2291e5ad681438bc881 GIT binary patch literal 3619 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7665d12542d33fce29ab44f63608465f65509288 GIT binary patch literal 1462 zcmeAS@N?(olHy`uVBq!ia0vp^-9TK-!2~4LcctB7U|_BFba4!+hw4RN?EMk@Tk?nXhwhW_96oWX z>2P`WJ6&2l;fscf?Z7fmJ7whN`r58y7U@2^Eq(#tm*i>5FI!96Ds1)v!N!dfJybr3 zu$#@+72$fg^3#FU`%UEL99#_q^?P`4163}%sKF-dcYlBV|DT_qPuGvPtN9_&>2jdp z$%%=botz#Iq+%rb+C|U5dGqGbp{Ax3%V}O5hkI8Re0p-S{QbSex;a**S`s|pzI~f# zUH4c zJ$trll~&C9W#YGsSGE|m8@yB4c>As2^3N|XFIQGpo?#1gQR~^`{qnwQ!YzHW)@`0_ zJ-2S%+Ma(uN=Ix#+|Ht>H#euxsGQ>r@)6VH` z9#by_XU2zCr=jf3hr}yHEn8*S**yZ zMLew{hgWTTDsn0DieAF2J#{zdi@%X*-J~I`xTfc-g%-c}on(jn9RIhnJU>oH>8~af*r5QBRws zx9>jxytk)v^X(VG8r?zME5i-@+WBOoA|f_K=*%!-W@c_UDETL(xcKu@@98mm;&H#e zybMlERP-}5HNAS}iio(ledQ;X&pE%}_BlmPiF$GU*}RjbrKNt$FK3we`TEB0so1!E z`}RG1{`~vQ>LDV#*26F+GbvVef0dRYUNjf8r?=B zhjQOOIM{49`|a!N>nkfOpP!#^F2VEt-CgE0zy!QLet%q4RMq2Sy?_4vnK)5U##)B2 z|M+L11+wO{V4p`_F57x6y!&K|l&tL0>p|)1>9w`B+1c9rO7&uPJSf|}@WzD;7cO0D zdavTMDZ!wl`)rzVOWB>i=|CTZdFU_Hy?3S2Ywbs&*{gTFJwC(XdBF0R!PC{xWt~$(6990m&wu~` literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7fdedb5a7ff42e6b2501d08eee73d428c17c32c6 GIT binary patch literal 5247 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 D3nM)> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f9f3846449883d9841e4aca5b0971c8361712947 GIT binary patch literal 1360 zcmV-W1+V&vP)I5m_>l?GzPQSY&Ild zj0pyuu!m4VAu1HYQd-&sf>KZ+2`GUuw#PHQ_l^x_l(cwUBqI5H7?1Dxp6{OXoqNw2 z2iW~M_6VR4_;LK;5(&dF_+hhQHk;>TH1?K3X25oLcQIhfhCb;w5f6RPYXB>d;wa&! zz>bm$k+{rLA~{Hs#O-#Rgn-=eC$6g#4SGyr49Ega*(e^Ti^2v0ZmB`~Brkyz&(SXJNJofTe!kPypxfUMyg~l?m?DguLcEV|A zavts?7L$@6lu-v*jM|cb9dOLxYl8D_o z*SG7kl7DDN5!|I){Z9aqK!&|sjARAJ3FDH}vcjX-g*W7^u!!Q~+$-1Q1yZ)gGTo*U z<{3tP6luXy9-XRznT&5Fhg}|g{Gw4V$}81oh~*N_na{tB$daZsKYRv~9#u#0utyOo zQiGdTWk$YI%S~k88yv4xq@Vrln>tfnWE5xq*Rjyxm}L-HhxZ(Ak=jc|v8C3{N1fj% zWJXDNy7{ z(#6rCp^6G!Lu;>65~gT<*qq0e>V|z33GO65+({(94n=yhsn6h4+?~-%15cgi7qd@) zc#^g01SdC>@a^v;t_moS8_%k1vWmrQ0f(JiVN4apmo-##`QrIUW6_s*D|VkmGL~>d zirO}3kVu|2>GwWEt?^z{oqA+uF+C|LG9>&`XzE~(vBCV~c#omXG{o$bK*t?HY(0?{ z6!rI5N-}Hibr}qu!xQ~xkx0}zy0pIfbFxq<;fsw!3k)ed3kEArCX?x`Q_mI#gn|S~ z>Fq5CIcX^qtF5EGwJ|CqC>G zWt|J;uHhsoj0{A=5X-PxBh&Yi&NnSO#ap^NSY`3;`jS+UI7!#i2L}n%LXZT_oOf_g z<`2N>goZuqI(?Rx@aXPb?IJR2qY64j#GtBr;y`yt^*pd;K%@BUdIgMIwW;3*niodd zMuBR0Y)F#>?@6$Cq}o;VjOy;(o$UYcw&dBQQcbIiagWz$3eWc>*TT_vH!a4X6w%?P zfELkp-!G52G3)O3K!wAO?7#CLhdpBY13&&1M-jJoisZ-ffnTKe0Dh6)1N;NTP39LE S9k_=800001&yWv literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..72d1c1699a8a634e0ced9cfb52563d04c564a88b GIT binary patch literal 698 zcmV;r0!96aP)q3rS5|EdWRU+S# z6r$ABBR3ESL%|_S)B+c<72g{CHfVjY9wm}0X?gE{ulaLxldEYnzG;@sbK$u&+ z-Sk}b#7eP=UlWPv#P0nr7NF7DX!>fZR4T%wz_1L?i;+bwr`5ak)}%F14CqCDuo#>T z&raV?`wG4;Z&&Ii<;uHG)2G@?*)wZ*{QoF5^~goyVEo5;`X%kiIx^)9HcjYv=sa_d z%~UVe??3EwISz|w@E8t~2a`W1v8CW6%!Fr7QYY{Mu%G-z|8?QonRjB|95EOE6dJ?^ zv`TV;QHN4f59y?Z@Pe2Z@r(Nle*F4UNg56f8{I~e&y+9c*(@6=MRpQ9=zHjay}sU- zPc7JI;-ko1Fn3RP#xKTpPkW-2(AYHnfqtwRTB1(S)ow=xN=-fFP8tXd;B|sNwiaFM z^Y@|GVLgsh$1Bo`MY3S)U>UaK+wDt6d;sg+>Fr#P gt!udI-$e@f3qw5XpPFxR&;S4c07*qoM6N<$f;tmJkpKVy literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..da58939effff334d761d767aed6801b57f837618 GIT binary patch literal 7911 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..25364625a5f121b23500ee566f8cd551431f3dfb GIT binary patch literal 473 zcmV;~0Ve*5P)3Wx8P8}fL>-G3f^AHh5w}66u3GqmN;9SiSnwA*bo z8Vz(h9hA#uB$A2YZX($T#JPYnpeK6vMd3k{2n2Gl6iB43*=!=8&qEcX8nG+DZ>VPA zOJ=DF3*_M7+U<5xsZ@|mB}X+GsyU^aKGnSVqVUjZf`IXwLZJX2@lKk?G>Eo<4lqtc8mr&6u*B( P00000NkvXXu0mjf@f6ze literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3375b720d60d224bb90efed811c58c9679c258b1 GIT binary patch literal 74 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 WagyIvqB$VI-`(5#nwXpRPyY+LDJoh3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9ace1ccbfaa12c30d7fa3a87d7c61ce0a3dcd578 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nRK~ERQkcznEA75WzuNO#bFl6ZU W;NQBIAua?c$>8bg=d#Wzp$PyWmJ##- literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3375b720d60d224bb90efed811c58c9679c258b1 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nRK~ERQkcznEitq3K)(fOH7&3GS W@oUO{R%iuEGI+ZBxvX@~ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3375b720d60d224bb90efed811c58c9679c258b1 GIT binary patch literal 74 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nRK~ERQkcznEitq3K)(fOH7&3GS W@oUO{R%iuEGI+ZBxvX3(R6vxkfx2=d!S_N4uDk_K+w0&YAXarOui$bJ`Xw(>EMf?ONC_#}z&;*KzQmr<~ zQg9(9$Rc5Ji2?<2E1*KbEv5LuCJG3FZgf2VIrp^F+xO^02sioV-8XmU%zw_DGc)&6 zZEdYNUrwJsZBCv%X*qG?ge{AAH8eCdtB?DzJr@cWBuY(9jWrI!S6zLbIeg@>DL+(h z_UzkZ%J!An`-;j6bL{xBaP>wzuo>>>e+kr4>jg0zH*GX|v-8ZDQDaOrGith}cQa|p zX{HUevEaUIhpwh~kKSfr|A8iVVy;=eX0>grS6y9Q3y+?Y!0PI1J4#&mMF-;^9A~dkVM2P<{{=Yk|ep2>CN5^9&W+%z^s) zdNcmv@m5^Y%}ItnA@LHX1o!VSS1|W8A2I37T;@dZzYnvHBneOsVec}Zl6Y<~Nw$wB ziC+x~0FR=t&D2t$CPeNtxgu@=i!0@dKL!mkQcTNVOeQmv`G>?ik1|V{$xJr0fw_s9 z7nH9cv9pG`jbtEr{soCm*jAAcj51f8?h1tw=FTEX5KR37l32qtcnYXMtd+6E0i54( zEqG&rc<;$zYQu3C3v>XZn%VH+AZpyQ;(`Q1Cd0$J_Qeth?7CN5W1?A6<0bLFxXy2C z7_JN>YA_5uhb)Bv-f`@yCKgFS9W3;^)#-G*s9<<+$Icxl$xAZcAWx<$mN=BbOL*>r z!C+^=I){!`z}dh6@QbPcgTzMIu5O7qKFxV`j&0!2j*}c14dUc;<^z(zS3YFcGmkSK ziI>8H!k`Z7-W#-q4c8|6K)4{L;lW|UhS>&wiQm$L5Ql(%ndw3@`bz?E@Px+zIt&X@ z!Ah*>+FpT8^nnHZIi}*z3e&TDPuqE9cSK@I=O02Lcx7NvjfOi4b2dS-%Fo7z%^OUo zww>(B1gG9+-orhnd{R(Z;|p6HrU#=%rz+aL2iW?Mv3;4Vobp(0T(lg&`3v(+G9?>& zfLg{M?y=|QI*ocT+ev~Oy9mlPrc}UClG6?j0odk{TwjtT5>79!P`!`Gv>DUn<_Qup zu>?NtG{B(%Syw@Fl0g|_2A#pf(}Om;XhR&pJ;DV}$Y(AM+O{Tg%JWm?2GiJ@KwTd0 zV4h;y2mdv$@<*+ZJ{JoCQ(tX1T5asEZKL^%dvE zShkgIySAB(v<$lxc>7~4Gl>Yq!4o?TG8XZMMOKArUHuQy*ewvF@FW})%eHd#_)(MD zE7MRaFVtT}n!g)d41uG9=V99lwz{!7W9=V*g)fcNi-`)1H^rKz=QG6(roj{x7Kp&f zp~FIJ0>QZ^2~IHQk|glpfrAH3YMWI1qU@D?r)D z&NL??&@G=uayEoWU8uKE%Z2(^rhpP#sPP#V*Q%0Lw!pv3mw<;joOBZr=qA8RB<c~2Yx?a4C@r* z;D`opR>s2}1ddz0zEVGucVo9>6&G$FwiEs))A%*(Szo>$Xtt#W4K5}K16Ls4k1H!H zO`m>!>>FNWZt#AL;Kr0;LGH+OAo*g@8tEk8U;ysJ&tn1GSm@z(-nah)J(xrF*c)ha P00000NkvXXu0mjfnvJ-y literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bb9e9138a05297e36d41a4e380e4a6eb43c03432 GIT binary patch literal 3442 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 z z*>dI0Tvsw%@-~q44#G_%kYG8@ zCwZ%1kx%072akI{xg}RW0s%=6RusLD@mSRJJSaexzTksVE4oKSUL{?R(qg|G>I3(e zakdRD;lw|;Z&V?~v8-_iRL~u~pLx-M3C3Y*;R#)NL%>Dv8rk{o%mR(bl}znxLb2?} zMUM3sI<48!LVIX}PvL(}uTcP-72S+1k`VIW+R)ei^FwQg^ykR^*(7An~aAQHTCuiW2T4!S$^zxR>@`lwK)TPDp|FMKM0jX9;TGMI9Sh{DQAmwDa`6 z&bS+&9e-h?HODxFYLR0YKkgUw(0g7iGSo$(Em>D$&EEW>eHOSk0&phKa8{w-5i{k- zAg@!7I`LXPz02!5-{7YM^`=9jlP@g&f@%Eaea2#QA&YH~=~~H-ZRj;G3QqxSKl``8 zB3&Te-;RI`v^dsJKuXt2nGs17&nh46`5yfttEHEYu$~0<&L5-vfXovAvCbI zNe{NJE&gdv)AI2BoDNm+Nl47Y|MQ z?K$};+E9%Mve}q;NglPq)RU)3`+0wg^6;?C`r(dHb+tM%Qco#+AZqa0$Qw8;ChJd| zz%e0+c)48mU4ZQ4a@l~4tmCADdI4Owx<&!seL_}G;{)=yru!@* z+4ZmM3@oXX`_)h#D#1>FhO;#XiVEMGUp0v?YL+=v-CT=OdIhTFD-Pr@$mj13zpcMV zx^A^uV*-FW3eG)Po+Izm+2TJNvgC4w7!Nmo;C;|QeifzeReI>bPKMrRz-6-zD zKNCe)976`iO^`|9HF-!x_s_TbG?bLK)(5fP>`3XZcV}#=gd}IbmY!!+F2TeZ6trp_ z%By0}QNOMVu;I}w2t1e05k2Dj>r$I5ft*iu07PH<;W9;&5YX%!OamMb$6nrHwRY8&J}nD8G?#8Uv*fRhvi zj_>$nvhx-WNUK%nJ0=}-Kc@Y9lQe{YB%7SXCr1E=rs#8CQK9a?CYTBG+@!M3=mB-m z7`3d%RaSros?=vQdhA~(gF#;SL0!3oMBj^BQ;QySuo|A;q27-nv26~bhbUv3^1D8 zC$X>l9=WD_w#`Y2a=3>d{0C@Hk$^eB+OqY+Yzc@ng7lW9=A1r|=f7N50Vf*LVK1hb z(+^qj8ziWZAK-Yido@b{gB=KcKdO?};RWk|9k~&@{T60NHQX13QWwUaZ#PU}@-6&| zl4;S9p&jgB^$clmXnluQ;0!vmFf;!6c@ds@OKYQw+$n)s~}YLo92!9`le(QoxVbX|7g{a$iH39kBXBN!)2jmJCoHU@YT zA(QpbtK;^GV1WlC1(rW18OnL?Xa9uQeZdRSi${wASbfioCXwdlu_5v+PJrxXtYVx~ z|Gt%A;7agiSEKjQr|hrt4fX2U7H$BQ4~R^1dp={&$1jCUpQx_d&zDuR;P!T(_oI97 zf7a zkIDlc3|7pTz-7BRle$@63SL8rvpEo5@U)ci1qY`&@9_4XkcWi51b|Zn0j!gvhjjv= zn$k?{g9zjYdgCnB?R7zSE8|#sXC`<4Qo?9h$F;#ASWqVG=dd+-RxwRA8e<=kn-Q?^ z42tYC3ldJ@W~tkUTl+*CVhQ|OlOB9D-5*;iMT0ZolFXLbk8~W{7Se-`N z^Mh}zL2aFFmsutYC>>f}h1F*bI<|?AEOMJp=xlw(GmhTvc^L!7&iLpX#k%v>da}zC zi|!D6p4hUDJ8Zw@-uq@XUo`&v0_Ot95vqC*sU}T&`1uLt6!kLWxH=Xa3GmS441qVHSLi_Op7%M)sd8seC?wCkZG(11{CEUk|m0||*2E_E&w?Ok%iTG62| zdpyb0q7zO~r4u5h?Il|2$ZGFX>rM<>hH=)^ejd}clJ6PLj*1Z>xQlZ)H?Cu#jb1ig(_3Fr50*()( zbhnM+sxTBGAhuv!pv0ZAInU^Dm(C!b^#(uRa#wr`zwXNF-F-kWG&$-25cjgu{bO<6;KX=WOFZnTupBEY#STJ2LXv<@EITjLY3KLP%xTUXDKJY+dC-nm*YFUxZ5`LF@pU*L;dykmsf`95rmPaU^kG2 zZL!<}@Pr2EmwB!+)kRWxI$mUNxFZzu&eoqUoFb>th+1v(b62o&k+U@&hv{%;grk+m z6ysl~V(lskEd;@V!m1DVlU--gHJZ=scMeB*7vdDVN7)*8CV?nCrr#ut-7C|2)PC~x zJ`1xfZbojo8nRu}E`Cf#_9re5_)C=n)h4NmW$sQVMi#qMY}&uFfoTMJ6{C`YMGZSv zBN)=rnpE?ET58@AD~&kXy>~8M`+YfkaQ^-sSvwJjkMHiLzXaNMNS6;-ouv*C8ls%W7_6$jKx=Khk>jkCWsG-7ecQJ1rHL+`0zc!u zG2Au<;4JAvB1)MNSd$qy5McY$lJpoCGf{-e;b}|lB-a7RFmCZ=tmi)7-ry&-mpI!% zASTz|qd<-3%ar1qcB5Jk$g-l3w_enCE^je!oXRH8--^tn3-2w?)`!Fn0}G6$XAd%2I{2mpY)n=a;p6{S7t6VF|pXP5)t z@)uMIG7@VGH0s)kMxryz@WIhTnhvWy>A#LUHqLH7@T|*a?0*L&-?#11v@F4j3SNXH#oj z1jeX(o?E6j+OuBG=iOvkW$DZrr_15!zdk$0Ys`;LXGu(THR`@w9Lt@d3XoIGh&do! zNtwuSJJ-BfWf1LhZMhJxd$m7QGwTl^rUZZ+F;S;1S@FkVjAQe-1m&{{eeCz%Q6~g{ z-17nPTDDy9r{am}uaw|-5S7-RKA*djYx|L=i+*mm%SwWUlGk&&kx+n3OC{H-G z)tG6{jKbhFu>dy^#f#Id&m<#rv)1Y85A3u9RVc4qmGJa9tK=ZZmhuTB4*>uu{FmYz zlYDz(KkTFup&cfLZ)7=bHjHlkey~x)w?}7vt;_RTDQx4nbK>7jf<~yHIiI8;oBAS& z!tV`sY&e_%@sTLV~eP?>)``!}xK!&hkj7lZC^1w{h;=%2j0zy0@t zURNmh2=d-NJ$cj1-ydzWZ-mOT5~?aR)%C!#-@Ma43BH`)L)*KUKj1!tHB=8yltlvE zw?{(q+KF4X!ZU;CB-@QTkj1SctokP5wf5bL4cQ!!K3A`RsXOz|oMsQ{Fs~g43vfj^ zVLh>mT}WRsnICCh*Ge00KB?eknFE{qQ0l-Ys}yH1jNsBMtVj1Y7R(bLd+DE?_f9VJ zTRj$Pn(99l*xtU~vl880IJ-GisnJ}}F9A1AHB7OsZ)}}eAKba$PI&K(e9&t_M}`cu zPBghq%%BOg!RnX`JW?iYlJ zGOc;>fO}l=W3UB&3akBP@PH^Rk5gf?POH0tyyuV6yd+TvRS~cdC(U0y)%&ipI zI?q-(@)7TaX%~m$0HKjLEAwH<3YqpAQ)^{Yrc^~uahGcO2NgSu*A4O$yz6tbY#o?F)UVew+-xjF{i60=0z@p|aX!PEv((}abJy>2pzbI4 z;(?YM%2rO8wN9kH)yr@>rzt8D-h(eGyLp}ZT@U((t(e2wY@x%lsAQ#UN9XypuBL*C zaJFr-sqnIELJ(}f{0Hl_K_1-z@(g*V`%#l-0#-twi>3lpgd5GL2G!T_vk58li`y%e z-xNsxL-si{D$D8IpBRP=w=YFY(R+6W7EJFniv{Zk{MR$wV-zGT6F0+Wa&5O5 z5`sUN6`OX6G^n+!IzApi-w9R+CxIqRX9kaHr9T9P^E(Bqb?p;V7bn5QQ4#G7gU3A}cY!!`I$YEd8&-K4xSDZ(h>I@j7KS z7ofy&pfciEtcD%Gd85VJ|C;Vqcvwuj17cZd*5GPr`R646f_nO+8LCct3W?z(bji?T z)t}J3xyIxf!{x*icu5i?yM}Kt2c9(9VA&4EHB-1 zYwx<&s2AL_Mqc+ErRuE4|NNo>)n+V-<0tPw0LEx%k<=lasfPPVjMlj<){9zoz- zmP0tiQkW50uFF(hEMc$gH#n8qNxK?9m8Q1O)pDcw2n)3aW9T)VU8(@#3&Of~#~oy7 zku!dpC%!tH&SP^12G1%JjM-V&FQt03W9b25kF%GM)06Anxm?qv`{5Pklld@Ni#9Q*^gijr@2Pu28RFGtb+{|G1J#S%36G{VKh4R92 z3zpE&N1M}%&QI++n3$_C2q?US$<2L2F{ms;99;bac5D#ci#p?^&iUNA2qvT>d-8mh zAhkBFuO6G%^4SJ9WusBYIw-%@1jMRfL-SW6=k?Qu?W9Cj`VGVtL;_SL^_pb-6(1j4 zngSj&cDJTlIhKL2o?Ux=Dv^9_!AX|R!1#0-(Mr7RZWe3|OZe2O={8#*au@gF)$vlM<}36TY+V0on0+=7-1 zV@3ih!*6>Y?v@b0e4L+IMb@^AZS6>or7X-y9D-AZKcGRqEUc}u&$1UOVj`dB(@) z#jC}d_wdcrxFL->2*mtu$c;67t*jY*@bDg`W&tk}yw`jqQn@0oj#aGA=Yn51+%9hI zKFNPw3|+-}IvsDHR5vc6(mt(`oi#_4vCD{#(yVo$Zmc+j3p&tv8fGHF15Pd zyn&4{f&#((;1=cFxnn~mufw&0C{H07p`-~Fx?Tx4pkCw`uE<`H%nviJ8%)JIv`hY$ zc|v=PdjT*vkYrexKkWE#C2bM={s{2kaBnBiAy_w>?^G*$yXoj!pBPfJH-X0f*i5JqI+>Rt>C6yg{McQTF z0c6!y&fTxf6))Yd4f}484zbWWt&|n>*e*KTHs_K!_T&ojuIyYj{YZ9z&>K)ZG&APF zl{^-i!J@XUi9HR`6}&;+gW$u~*LE5QzIEs6j78Q0-)C>55fqU1oi*W)x43+xmx=_)0Bl5}0*-We0R5gY}U! zFrF_}3nGW&G%Vs1hr&(86AQaB@$l6d+`f0M3^i7f&^g)-FEKi3!)Hzr!7IL2DO<4Q zxVv34KSUjn4Bt$Jg%5p6>v$|A}LxDI04XkvxL(h$Nxzipos! zDS1s76_)|Uc~7TtORNHx^^7cL_0YAB55_-AzF2F*0T#^RFg8Ot6cU$QTqoH{kn z6^c6ZoPXu66LY#SC_BGIvU|*_aC$W~a1-Hh8sES5Rs@Pqj-)?z2Hjl>qD$d1II4U` zYMWi8j#vvR6)< z;iU$XR(!~pMz^QWppAk!*SC{Pl#~&j`-=whB)n+wk0+LvD#>wFysSLk_ZRp^Yx6p43=WM!{G-kLjtP#z-P}M$|XiZ&7a8#>H3Z}MJ?$&cd{>Xjp2V-jWl%$c?DzM@1< z{{X|?oo*!YXs2GR8N$ev{meM>8o&rF%jTxg@bU-!59VoqRK0UN?{=~R2CA`j;^~S# zC$9Kng(JgxU~p)|h}~ccH-gQ}7?~)P_8((-OJyf;Ssh*+9^K4V3mJZ~E3$Uyb8Nv2 z)@clYQt&yj;n9!byu~*P=y0$HuSHw$MbLihL3dF?m$)|!#@y#1hV zPjPL?-Ws3Li>lVR=sp58;RY>8_J)FGc2}>g2u5poIWhejI$!%W@s2;)jsdMjhE8ly zReiy~+n?vt7!7e4gSR@8!^dz$Rv%1>;@?SKDr12IR3eK_jzsP4=N+OvB&ZFu9M0X; zIq^R-xbwY5mdmQ)(vy)D+A1^4`N+N}j`SqxD$B@41?2bE==+McV}+a>T`OGLI{K&G zs*ioUqqQssmNz(|OM{CO}!-7%-F5Z@XwcZi4ap3D#OhQcDdu&I`gNSF&(%QTU z;VaZabcGlC7HnK~>Uw~`MTxx?evnQk3DZM~M(>DPR6^XFk0f}WVEEa0aMbG#N`N2I zIx3?Y-f%W8vOnqEf=+gLNFOudex?T9YJMa~e)BN~7wewF58C2EbS@385R zzLW4mXve`_j$TCISe{1CE-ggaw>#AgqiwVKWn?w8gtc&~N*f3y*ZE5iPuzF&W zi)Vdhm_axX7okHO!^w(7f6{H^!$v+_A~o%|m&D;A;sOp&381jiDC!p!k-$btG!#+)@w}Qyv)oeU@i7e zHOV&{j#d)M;HFXy1!IO`XLr6-NjW2x!}>%}UX+IVslCq1 zETw0+V~>qD1B81<$>>@(@ArHO<)QQ|4#YC_E#WsDrEU!Ys(b+(^|I zw_2yVSB&BF^zj!(CBiLV`~EE>RP%}=Z`S*wi1A16-W4YDxYdun7e){ zQb#5(oMSy${Ka0{Y)7ntOj=#}r8(3urKmiWo$u4j_)|P%0TW+W*DqPGk2P$`7PsOj zrP&wCZz_Zh!~`hcV{ce2M=J4>+fz>WRR>I^x!w+;2jV|{qpJELEE$;u(zkc4l7J^3 zMu<4)1G{Nz+R*qcQi9}D(e64cV%2J#^Iza@no5m7!8WbrS=-P8?;o zCc0F5(z=0PJ}=8;G>_(R)l(N_>=$AUDridkcdsqwW=ycHF-nAIu^$6tU=ALQqy)$()8Z9{_o1rW6L}_up)Kiup&X(+s&oBC`7=LmjVV+$1-)tmGfLguHKET}4~42SO+=h2jgRv#x3a=E^< ze!Mp}oxT6XZjKf9hJ0#vUN=4Y($|-;mD#I<>#7uKhV~aIlq_ibJwD;v(1l9l%hsUt zR=5(nop&YH$@(9jK!{%tf8C3X|$@Rr)vX*dS!NxE#U>P=)6u7&*{2i;uVMa-ayN1 zZ(dvD*IsIJNio-3J;~RXySKTQh&nGaP`LPOWT)3%&eZe(wQrHXkz7BMl9ryE?DxW~ zH`AIb+R-Zc3M8I}`-y}vo9Il}j`>b1S?MgipAl7h*|gYsRD3xCw9cMFKS^7-LZA5X zUj=1LO|C#U?%i(fxkq%IQ6U#QpJNb$j;L)Ag(WkB3=t?e{`HFW7cqp9ItSn%qLBC*!w3WA3e>*E} zvRO4A&_h3numydAY9RlXe|IobK;CbYH7v|}S^$1wL`_S6$;5+bLSB zE+^IiI{u(cmw5j0-ti!j=8kL4Mv!;Zeq67R*4Fo;)dDVUS+FKiO*OkL7bCyZ_6KTN zQ_~JDX|lFQ6t|*d>A!ymh|eNW=#(xLSv`!`E0B(sK>;NF7#M>9f|T|LJ?w-0_CbU8hcS;-g<1kd=)4P9P|6aK`P;hVb>A%Z&A<=PHrR z0AJWAxMZyvy33@D1J4}5dMw^On1w~s18u|#NeB_wAJwpDt^*HC^!RIFqQ`#S;}as* z_U2JL{6w|hXDkZ(I3|2y*@}+NseF;yzxV;wU50IQkgfNQ_VMMt=P5_I!||$9BFnPJ zgU}zN==VDiAwVO6#W%koPeDPKAR%t4=|c45m*bOb%2rsUf`ee@hcf=Np`x#a-=u<| z85wJ8+{p!&RT`A=@`#j2l%F+!Y1BecA2e{^hW52RmOYU1X0rcPb!0T5_(ysuT$xKa zwSaGmZnw}y0}EhYJ0{Oe2Tm(%FZjX|6znMkMn@-~fvs2HMfXai@%cDQg!?A5{`fK3 zH%47XLef)yG%m+B;IsgEzE!7QplF5fag2m>|9g-F;6dWx#HR@W4M4}fivY5j8T`?1 z6MH(jU~y>+$yQ$!;&%0viIw0n7D!sw3ok4xpGt%U&u#13;nC3tK&pQDBuvs&h3x(F zCpeY7q;$?KxKSu7h?G&V!ZO#7qbJZ6#V=nggq*XTN^zU#& z6;>{@zXSw;Q8n{!Z@XdWPH|u$oW%I(wq?FiM`lhAm!|;B51cy6$jr8PPv#u^!dNFroSoWW~_^Pqk0!gsG=bj~$+n8E`GD7;cS*&hOC?i2qP!n@_ zjfjpe_v91l(!+B34F@#vK!5?ODx``85PVl3NFsFwXdjh>IK*|)GWqpocofc`AuFH3 zORlH1(-i@Srz`hjsJ>1Inh^7C=3063fGIGm^llqpr!<4%Y{STMJR1=WBO`W+&;_xy zElNk<1cS0Ek7?If?m1rmA&^055w=qTe(#<~u37H#UM}*V6LV6`H~9Ln><}QK&f0Zg zT=s}A#93~#*Iw>=X)7%#MF!Y&^nQQ;Qo4_*Q0`y_AwNez=NukXR%XKz?c5^sozGL>-|qK=pjZ0Fp94p-q{}l zUjPwV`06{x$i<(4T`}n>Us{6meX)(nU%!@kp(Uu8m8tA8n;MvZ;Gw zNJSE43q9$=a=VgLSF>g_v7@w^>at*EWros! zdG|d(F)#<B&vxu%UAgSzER5>bhDPHMt zO4H@(vtTJMuu3Mp=NZb5pc8N=1sE*?`?V(uT-B9i$5yicyDd}(*gEvDKl?ufE&wEG z4zSQ3<%qo{k?&K}E1z&O3<3HU`|?T5rTiw4PP7|H_%`(-Hd|ttx8>^fRo}v8-@+CB z8K5EV2BJ=UWFuOWlLkkVgzGj0jQ*G$`$XBji-Oq>5HXG+URvSLIZ`$NAKC9ZDEy;8 z&#R;GAlp+d-7iK&!lU+ah+e;TkTPk8wRtA@t0Iz$M_nBV946hH6;s>^uE|8-sk>Nf zJy!uWIMt=8wGI5cQKW#>*N*s;<4^7>gPXumhv`teHfzM_xKnvlI>cmKeP;rIzezId zw&A+AfX+<6y9p@tih?P<5nFE7O6(S}d?19Un>3<%%XhPPfYdIk+GcUdZ6_sJ>W=iN zsbN3XR&66>q>hkU_2HcJx6{JpBSm95vakUrTF9Vwsgj7Z=@X&UH}%yX)7#n6_s{)8 zZ26|BLNea!dvWKDqz2UnO5keoNvSE_+|LMJEPgEzj8fD#L+t4vjp5w<@mVWhKxBt8 zTH$4-2(qLUI2R?W=$t#dOAFq)QcDS53Rj#~EJEg^KYid=F<%r!nF#EslDH_ejpF5Q zvAbrJzpTppYA#$^U3C-5dW}nX^A=hYA|OY3n(MWdrUn(yU&0`vPubpQU-W>_|phLq0!IyG;$D4+>ZN| zw1VxHwibMRVP1n2u21j9;M2Wqv}80`DIm{yOl{P*s8%&mB@=XX%7=7CJZ|BIc=xW9 zu4I;Cz9WhZ$bTARAdsOzG1{%YW_KSXR_nRyHWUIcQFRJ13I#&ZgL+bj0nt`aO&t<{ zU4!$IW{ee+Q1|#J15X|^E8GND6%HOwnu?Z1vMOetrOaS#vKo}N_@7M3GQ+1=b6=I~ zR|C6Xp3jA9Qcx71cSpA9ubsqtOP&kkKEa}z6bF9Aj8SOaNgA@sixVpWeiaAlWQ|aH z!R-L|*7{BALHCm)NB@M5pdLPbaHmwW=ykLO z%DX)oT^i{q)r*|M&U508gI<^O$#WM~RrQs`x4LH(V_PziRjq^L#bnEpE}CeOyo7Gz z4vCPazm<1fc-@FL}r*2}l>RKI{QTja_XaU`cR#Fz#KHZBBwO~u+n)u}Y)3Td|Cq;K1T%Id|myW%Tf z4zZ0`fNEQPXg5|c4+47=mGMJ1Lt>+O&4$$FWE_YM!R>ggEZ;1)m_{`NO(nYNt0XLc zd>wKJLEBgyiyro)fwzq8L)-kFi%PWCq@T{3&yRO!F6iJ@?4$! z*}Uqyd-L-YK%{*pq`mY)ET)~N;?;O`+z&2ipEHJx0(aKRRJw-|B?N4fM`DR1|9N}% zve_dRXiQqRr14S~gpM6|l)0Uzts|x#@9s8M&O6L?y(O3?w`cL_aoncNhqF1iYjL+) z>I{s;JPsh0M7Gv5eq@sqcQ}Fj2tm3 zS=3(kQ!_Y34hEYdvZE#H+Xo47U->?~cPVK->)+HU^kxKvk3FLYD-3QSe;GE|nb zz+>R8r^mLViT=<(eqkyIybxc-+aea)dwEUi+mcJbT0^9Gd!)EAI4p^#x&2C3JKx2D z0K_VNe|O8_GRyZfarj*KKoscT=b6B0zQ6}L)-wtDPiGZ}_QZB##YGJ2V`sa_$MZ8C z>B%$G-x=b9GK7#m(JS(p9>+1Tn{KP7G34o$7N(AUy1OEJPm~D8BS&=salQMPtc$x; zH)I0tA1b0mc#bk$WdJfHL^Bz&9Gek1L@^M3A4NpI9{ zZ>)Q{i`h#3PRZLd29|pnMXE83UpNnji1wEu;w|AwDwyPfIpcfS6qKIPur^q+i@ehN z7MNQ_LG_IDqdB6*#3lJ%$`qwi7L8k#S@UT*Zd!^>Gl`(fnv;iFkMG}CcVPlhHVY0x z3>km4`7YG{)f;cGA#RAM;kPHO2@8lc^x$QC(x%t1Y*w+waY$mweJruvu8)rZW@4Bh z!s7z>yb(`SjAWrcN8uQX?2^B?HT1(FaW7{aN<>Hm?OEfFjc_#>lboExf!3_?l#|E0 zPts+7ijk37+`f-vcS!ULCa2DcMS&J(!@hvm);7Z}Y-!8b9(*u{;*#kJo0Ecm}0 zP$6NuT~6d7g=UOkO>>FJgK=X1IsG@T@zdww{{Ap9;JyB8}dTZxT^YlU(pbQ>qHqu#l>YE!PD=qCeEV&vExn~(YiG}91(gDVo=3{okmc$SQx}J|s_JW)|g>5}s zg33F`A7qs;wg`X)mxmQAb(l1VuFF8(3YW+Fm%lYq7i0ggNVXS~#x}dxP@iM;bCbfZ z?Fg${Zq&kx%{WuPzoy3Lcc_ZG0eHoEPowsAqkkQAXIJLIZ`s=}RTPSwc#;R?n>UAZ zg6WJ_2&ta45q*E_6WG3N%Pwkx6uUx5E!==ToCo(_kzl!sA){-zOI8Cf!@rZDOykOp zb(^e7OHgg{c6!B?mmfTW{1dB;`udNs3=a> zSz2dohs0s&D~G&SN;4ftu899JVr4u~RnD4(rUexzXU&piBwl`W;_~QHHlv7Uc>N1C zMkap04zQf^*6Fh95q#l7BO1ZapU{}kp-sU9N@{As6Q)4)-y+GYExcY)jgS(@Y8t_o z%U$$n*#_O58kFeKFOhvfh-}Pw0VU ziw+*{%$^i4f%Bi%@4ovH2v!=Oh*+QGA#h@D>yH#cH9B96kb4y8#q_kMZOeaxNbC#u z*GGvdmB)G+Slm@-U#;yra{VDGix%%c@M24T(tnhmJt}H`fD0n|g!r77^yNVEC|7OM z^yMv+NBs!f%Z13~-K#|rG8Atcin0Hg6o~}nv}h3)t9&t96D`La-G9uoP&M+V+ttn2Yu~zzK?=kk-?*YA=|5bRskEAc175OH3X;X*2LAsC5Xus~ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ef835363550d8aaa5e1be2cbefd7ffd217dfc063 GIT binary patch literal 1536 zcmV+b2LJhqP)*CP36Vl#FayqKKOl9Sn%^3UNZYwG@!v=>0}p zptOaS3i9kcZ#bj2wS7+^%PS;L+P;T#&iC`a@AG{x=j>TrT!gNLg$1Gc`FX_S2`nTM zcxrLu`oJu{`EwADN9{-@7cn?Aq#cjL<#J(SVgkuz5~HJ|2nK@)1OgZv8xv&~iv@1C z8*_7W7&4iV*3NA=+0gXLihCwE?!6d6ay|iv(+R89D$W@h89_K4hR^52`1rUeGn>uu zdcBB7qZl3@7G>7SNw^$#bbScnyJzpQ=gS~*#A7iG+P%0v>__vU2bMq#*_9P!mY1M7()^Q~X|h+^F)oES6JCRX`$9BqISlo|!}Q^AT+1GTR1WO=dEiDs$Y3GMNlM ze*6fV-CiDq-HQD>6pmmqo+V%hKz3RyTGym!Ni{Gas_;uK& z90*%vb#+xFn9o28yA?qKp)lqH9z2=~qixWxBuGA=7a6W9NMaM@Z<<{(5UOm~Dg_B4 z;di5BGK5<%$CU%o&F<93p^6}WZGh83p1Bs31EI3ntcbk|NC@#wkl#k#%7N%+4{1F| z8sz8qHYGu%%w7m0Ms~$OC@HfSg4}*(Ru05~*|$KRYV$4CKq#7>aZ7{TH~W+Xq1id@ zmj-El_dz)j-RvHZM;@fdmsSphqS=?0il*_EKz@8}Q4T~mJ6EdGAWv*DB|&I*#w-o; z&>GxP5C&0PR*Q1EoQPE#q@{my$3R$%%r@JF(ap{c4r!1+e`ZHO^sX>HJuPZ;yD&6+ zDwUE4xxE8s=MDMS+uMr^7cP_>H>#S<&UO2CKnjg{`SNA#-Mbgv-QD=~=@ZiFbjknA zir3`QyebISBabu?uG_Z*!eH0e*U{SAibIDE;nb;9sIRXV8*lVWtuXAK+<&VI67{*! zZVln)OEcE9>6$LjYNgO$H1cwhF#=(OJ(bCd_wY9aHK-kK;)jVvD3X{f2 zB!Y;xVCgYC@WX%$jV3<^ToJLUW^_MF&n`D^+`#_*`*HQ^RWvs@qpq$FM~@!G)YOz= z7{;)w#q!D-MZ3AedPE258h7A&zZ2i~P2ja7Y#2oEQg7b85v{;()zQ%*?sMkM8S(qt zwQFKc!39Rs*<&Wnnx@)7g~nBxb=?{zSw-p1uKa`F}Tjo zP65EKbnMtMT)K1#4Gj&#@Fz~35P(d_yswe5Wkr)SwuJr}Z)FggJsEW4kEt;3zO@?K z#MUK2D!LEkM{ZgrsI>W<-XQhS9W?N>>Nb2gIM)B9h|> zgJ8|_K@SbiR-l-6DYgy)^xqVJ@7uQzjg5^W!^w0nePo}Vos|dSpePGM(H{(owSMv9 zMVvo>{xh9Bcdn$2J~?~#taxh00A*n4DLy%n1~EECVXH8u@{>@7V%e9<`N=F-e7$ng zr#(_rlv-DaOuM`ZKWkC(^~$NHNn`JBS+n0Am{Ja;riE4eL_j$Z%J5S6i9N0yNZ}es z8pNpC{}0t<_Fc0Zukw~DSDDfv_s6|Tg3#=SHnDfjV})Jwphso18yeYn&BIWYA5Zgz zw<;i8FAQ|eE-D8?v1>7YX^@*Q#*_om&F*kGDualZYBUhORP$Av{cCy6$?x}<2ibb@ mEd1Y#XTO-7N`mNHPX7YvD?zyAd#(Eb0000)pYZCW5l)mb>B zHd}HlSAs3AR?K3SuB2I;UvLYcTxf0mnC$_LX`ebVQ7;+95r%6318(GL`Ru7Y`)xYM>PO5~u`z seLx(jO5CPuUK@~Iza^-w+1BqaU4_Y8(R*${@?)s0A}@~3IG5A literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ac02e3d97714faa924a953a21a120a183b85b460 GIT binary patch literal 288 zcmV+*0pI=~iwFP!000000CiBYPQx$|y--S1CfGVKctT>a;*dyHVe5h_1PFncjpHIi z99xbX#K0$@ZisJSLEw^H~PpFMzGVKh}uwGdu)k}tf`++#28 zRJ*!6ohw<96Vs8rAZ&k9mXo3&mlsnKAlNbl znEgjM=fWHJV6~#$+FFU2)~1p*wa!@Sypk@-?n*_oK5kfCIlX2G001BY z00^E^0e2FB|NId=8!7-msqXAVBM$-7a0}7!@`>^Yit>uk=z-*Dc)5AGpHncOVZi?? z(44L8AYhpL^AQOEz=paw+H!hA+}v%Qot{Iu006Ryl@ILshztOri*Sl?^6+#1g+PDK z2Rr;N!+HjD{EPJLou55E06^vrff?93Svz}yY&;yToGfh}WPM4^7C;H|HfrJLJ7x&%W1dj6f9o1a&hhwnL#4FC{6x6p;S*;+c-`a-P# z2OR?dkO4b8az6L=0K;rOA(kF6XGcreGd3sG5)5;8^Z85A(#6HW7W^;l=xhyf-~>S& zT^uZ75TFzEF9(!oD44Ay#2seo=<)*aPaFUO`oEa~Na+6r0idA&6C8l>Hwg{luP_+@ z<^Uj){}Tm(`L_fM{omXG9883N!U7Oz{_!Q;eYQ>N81(j6#s~2UIY)O?SUq5oIQ(vZ66F5nn7OZ{Agq%P4o*D7QZz?e3`Us%^1y0Ny0|pmWf9 zN&RlSeC~MV>R_Z3Eyy>hH7RfRv6N^_>Zxn>@cxV>sAI@fQJ}tDc8W(4R<*Xpn+@Ko zuW)6xuf?JtT#JxQZ-Olj5SYAT$6f%A42rdN$ZTD{3+n%RguR2QuR~qy=CkZJ;Cf#S zaKEIIT*~=%81Ho+<~)d#H=7b4m*I>!%D$CETGIr`WoFPcRuvVo7cbxeaTEx}ecVyW zfI}`mgDd0nhjOxuE0NN9LJI0a;=Tlg_~Vc%B3u#I1KaOdx{@%-C}fT4{8V1?yD)Sx z84Q+~UM{n69M`Jnq8LV3s(DMBbYOhw{sGkE2^t8ltE=nNeg$-0lMK2kZ6r|V5DqWD zwD+O>y&Y?HgzNRT@wKkzdP)o+<^*UeCh$R|H#9y>cKzhM%!W58G^g}p1(6$U?iEP( zh7({oFsrhrI|4kI<2{->mN7c1Xbw&&W*2rb<-_tF{o!DB@j9rjn3f?$b+1HJcG~em zS%wd%G$!bn9l)2cl*!&Qh&4aa@68}H=MsHa$TOn0~CPFV9=H# z?>T%1d5}Jwu(M6qA&wJ^*h6hg)!T#k(Q!YTzgo?bMUSO+2=M4WLh&oAX?KNV- zsC=KOqGHo44!My4iZGS6UG|{HhnCM%l}u^zZK>7ji(t+!a$*MlFT!q~tkT@eSJ5#Nl} z2M=bZjk~SuB9t#r0MnFUbWf$EC)y=NR4J@$;MK^4xasi${fQ^oOrGz`BqVtn_h^7){Ock0ccz6G#+2VLUEZCVj>l5mG)pSR zNMTMG1h85Wes_b8yCIDv{%)3Q4R@JWuNEs4Ls*yW+PoqV>KiK;mm8W|cSS8|ZdUlF z#67*SQ}5}wJ6ktibtqSoE&18v3VawD_#UR>La%PvmotcAhR1@as zic;HA+`$vt65ftwCMEcp2|lmVJ<9uFvUvagJ=lorDES?79NRes#;{Kh5&8UNa9W(O@u{F#)qeBqs#s8Jo_pY4N}R+8@~!% zkn(1omI&r=8#^q;5&8I<=oXb0=F-*Od!1^!?eVqPG1l zBtZ&+dk&+yhkCfHwhY(FrBl?(q0CFX5)x}&W4SB9Byxb|k;C)4(1S>SoF2qE@N|X} z0YB4oe1St|Uk+j(dq`q($tWBwebvr?HXJ4lwV-^&?UEC~UJSLydgFB?2tyEhZ%<7$ zb0E$x__>;xa?3We~C&F&-0d(<*yQhHCLyMc+!&lT)HN_KxcxnxU^z)da>zbP z&1xMEi|L!IU9t+k=a)@+%g9bOB@%0jjJPz;s|w#z{DYrfu#LgyWa-4cVC)*La&3)7 z3IuAuui1G;(*W9+s816Zo!?6!;|8S774-1jqG8{-(PAzX{U3HbIn>KetxyQKCp!RW6)+(uqr$|ZnnN<*ZJF~z zX}U=`Tb!3g&9Fud#qZS3v8I+>vDBB{9wqrGX!^$qN9~wyT+C< z`LL}|yGoFzbVpz<+%-I0&Eb8AESMvC(ssix7<>IAAU|Q`ICjZ|7q0Cy!=EW1A381^ zLpVQJJ{27w0+s#pdC8_ZweowPZ$_*7;nHUv&6&Cud;48R$|sYH+CLCle&0!#yqMjn1qKMCtg1`c5D*?9V<43W?N05#V;Q$$`)iOuT`R}2j@J1knT{GwqbDrYkibuUSz;E>nk-9z4R1W05o za8OT_Zv;4JwK@wUA6jXdAKQ*Esje8^<6m z_TWq6<;@N7DCn1?ts8%uvbH~gY5kDx>?Mr3y$IomB$CKZn~&fa)^^YaAtW9bi5ji+ z{;n~If*xZlU9{Z%UNQh574E?Cmq9Y;vMvIsSt+`PHpe|7{eifH{!oc*(GfUkpWEak z2P|VU*JFSz*NY|!%wutnfie(&#C*IPZ>iREc<{;PL)JI&2^ZpL^!(N9q5<&YC(svQXL5BOPa2lbOpOv7^A>6r9t?BQ9u?M zFY{odYloO?jqbpG>4D2;osYFqA2^7**2Avha1YB0 zs)R*Ef1y`xb9U$N4y`5zZ)PlaSs@v8z3U-Y7@<9|MNkFSllSUVP#6srEfvEA&&XGx zcDi+#C1Rjha*b}~@e%uLXv2BnYk*z;S-LUVhBukRD$i3SVJs9qZ_i+MvN6F!%ET)qnMu1#k$J4j?JS!m_b?I5wo z3KdYsvuHdLRA$NBj@2~CA~JhKSj~!AU|3Bn8mP%DsBY04+-%4D^C>=q+i7> z;hVWk6_prlZDQT8?(jX_<&9Ht937YblbiPjR&9{S$mdH~2d1-# z81SW=#=-~w7Or!ACP&xNF2^`Y$G7a2h$hNhDW;X)A%#=AVarcec6^6WiK7u7ta zpY-#+x3#dbPaY^%IZdbrEn}T3Nt1^wZv0L0Rb(Z0QSvkU+RHMah8i5%%&*)R12meQ zVL!M%+LSu@KX(hZV2HJg{s*O>P zWdUZdU{_Ao-lSKVeyePkq?M*Uau1x@h?Y_votG@PTY8z(7uy8-Sc1y)`^awQ2R=}p zup+x~H(&YJ0s*eSm_&sc&C=JLBkvRXG5+RqoA}a~x5J|c(yX+4<0MF5+Mc4+9*sC( z9iqRx^&%{$P*Gx=y@9faydvXl2X-daW5l3&R6m4lb*#jDg|1eHfc&H}fkN8HIPm%1 zv0v_0a%6m5X06_*R+;`%?*Y7QY90WU?0bvMR`Z_e#+4=B*$h0 zwAq343M@7%F04pI<1EG!U+WiBJ@8NFcAFa>2g>h$f9ac=FPsf2whY_)@R4n+_XnQe z4>hY+8*E)8Dv~_eIRe^W?N&*pc;uY;+sfW&WkNoqW>y;3T$z529YH0d;GeN--@0nf zPmSqvIZ5@cFO}@9JzEWlhrYS@g5Fvt4>D)bO**@*EN(%?$Jr^SGJcRrs#iIs1JO zMVNSj3y!|&Q3{P+KTR>2xMBe&#lbX9-0y zaFxP*c*I-(?wnKFYd~j@$(};XBR!9!Pv(9M)l9~)7Lax|8nbsiqYySYC$L5uDxk zsqa>HY`?>tx?&Qrv)5NrIU=m6sJDBiT=?#0t;c+x6~SO+@{R$;cV^94m!R2Glcjl9 z5p`}%Hou@{t(67939PzyPe}55(E%Q&VLp9_fy@BXlhaDRu}A8DMTjm~F#lALM8nKe zh8!Yfu8VI?un@K^>Kye1=XldlG&Pg8;hL~ATNU$T7Fb5_RH|lVq6Bx+rkUtG6n(J5 zS#B>Mkf1PA{#N|Q&3k+2cisYQZS99za5dv-HNf#8=hycuW?=;QPfh!SBzC+F4p4(3!C?S=j3??O^QjVTOoHZF9xJ z)1ow`Q?)qex0&$_;cTmFiuBDs%vOd{{qb8Y=i{f_MstI*qM_A<$^OQLmWLfoFQ>-O zh9$bYq*bJ+qD{EYQRRov|6~v&j2VIH76rd65*)4Ra`zM)6GY}3t>4(hP03um=9~SF zV=o`|ouVSKE33(t$kI)aBj1s=5Fb|*5g*5bqE*Z2Ws2-8c>5W%z*4u=WOgr7>BI9Y zjyacEGVdkDH$9vcTMWh_G2ud6^`?=1KC*Qmr0cM~zsQO_(qwEV(4gEw>xK(xNw{+= zwWSu%E(`MYBr#2J2C$jA;PBN)HW*`Y1 z1<`xP%_69ii44Q60$Y;9+_yB;lFgqmwZ(xtZ&YEXCGF|IuA?*Nh~}SgK8DS07bvH* zhJKa$s&$69&nXMUe|U(d&?`D}Q@?&f(6yy9;kE?;{{KP@|35CokTjl6<$o7q2z*GR z_fc9JN;sJ0n13sP%JMqT9{Oz5=zqbo6S>3z0K{9MybQ?u=VA7p=1(o+?+?>x3@0N& z5U5Fg)X_SYme1%F6|E@si)DW`OKfDUvfe{;3+i_DX&Y7jpPcD`wi1`}S8`MC4n$!~j z>BQ|hDb?guU}^MQCZSH_&c%#R8$iaCp5`q00@A|NM*G*RiyMFEHwk*f3QROu5!BQN zWRxMX_lPw|(lyvQZgb7~cOU(lp4h<>Smz5`%rDT9aXSweakC+!WXwakUg*znl)?p z<8YOyGL5j>5;=l~i1%!tA=n`}){!7$BAs!MQGqzpT!2(Fp^n(|E9KsZMFZ1hS#jd) z)T!Y!T5(4n{4wO5;{AyGDaCc2`K&H}#w(14)5$sGMu!G*=neFrTgz5O>}0P%K{02_0ms%Z6-?(wXOb7r1w2l9X(%TvazQs7Oe-v)lqQ( z-V8*ps_FyR*CveZ@RAy1vYwuxDr5Fhvnuw0@Ilk%-PhzLarZwTi22Z-?^mJR%Xa=a z@bvyA>vH}$G#P_V<=q+@x1^pk>AH=))w)*Hr7!Pz+nvGm^T1`9BlCzW{GQ|L%6 zUC55UI}hAarnG#2_J)TQQ`8{_M)ijX+c#)iW~XEDlExj!dPPZOntHokv$I6%!8eeb z`vEO9p6Q7l(>gyhxlmE%f7>*)P4AW#+EN&L&;-(L5_(Z+n`D#pO477R z%h6(-Y$nOjy_lU%NwKyfBBFq(Aj%;gDAof+5N|5zUqKKMs|bi3Du{r1B7)Z6?;W!< znYWwS$!@wI{uDOzcINl4-|zc7-z3*oTzMe$+Q!YdUw;1?>#w=>K0?SSLIV39=~J#F z(tm-;@MAG+-%ZHWq-M6qQ$|>8GvW!&FbCj%J0TP5Q>Gb@b+((TVZyC0LPocn@dWEQ zCf;?P7B-X6{1YLisRZgv>C9dcst8 zt4XC-i)jWdzgrOt3agRGfYLRfn0=a(;1epald}1uV^>O#bZbUXIXj+GqUwMWjd$xk z*uxsU5{OJi?@-ow2oBk3^JM9EQ*owJV}2W?V@nHP>8X3i>?J4GV+;O#9k( zvo8)a#QQa4x1pQBD4f7h!hLG27o=TQ)~`lVnzCA{F4OuE5lITfU_v$U8!#rgxh(_& z=``bQ&7n@jA5ha?Wo5vy9|PLYN7>y<$aGlKAm#%+1Ct0@NO^6I)E=s9sOxNp<%Rn; zH#M~b+`_hEWU^+63mDM4ub+U0S<25J5P6 zn~*ZNnMTqILRMu$sNNgXg#tw3VyeB#AP8NH1o^sPfSUEGt6E1NTvBp?N2pDU>o0 zS5ycvFaT&=4}iT*)njPkHiOYaYhb&zhmctm2I_7z*sB3o)=_1QaDHCK#8%HVVMDAZ z4mZyuWG38PA2;+ppzvy>E&_auYIMYZ5wgxJca!HwY*I7_&_Xt-rb>BC4cH=Pz!>WS z;|ZB&<4&{Qqjl*x=_&9KuuUo%g4_GzhS{JoHHG=$$u)$`wKmFhv5s+5Pnx)8p!o%$ z94uIm-kUP$f|oRf;C3JHdOGeN69QqZ|D@0q$9-Vqy~p>;X;pKVVzShGw-(Lx}y> zX?1M8`YU_VctHY?iGGi{SmvFlt_)TOtCt3As%mPgs%utMqc#A%Cky|uJ&uA$>i-h5 zG@0s3Qj=1Cp$9jzx3a2oSp{@01$di!R7;v_6xj&SoNS4h85+2|4Mfm|4jry&NY}v? zOj=+xA>ZF;7Bc-r~k zQ`KlSc+YS=223iCXgy|mCa-G;RAqHdMdhN-wz|-%HC0uMD$1;py!76&YT3EUDN4G3 zSs7S~?)Yx#pBw;vi3VY#L6A-COnSe3QCmEbN-PodmCA*SOySi?4SF)6 zLQvSmJq3)r3WAD0HQ5Qy2{$p zPJ>volSW^iOIp@9E(uXa(Tf_x4KHWmzZLp+3{bBB5!MH{xAEL~0&vEt>BbKG!QXQG z2H)C1AuZh#k>@5xjcyclaCD5V?n*+AyKuqIL4Fuhqpc7Co1n$y4nkUopT$xowOnPO z1U$BTPGJM=-$`~c7ayEh5h>1U7ztw&8oEI~IhCM;+dVU-P1Co$WI zV2h|CBe{xcsjy9O=UzfW{;j(`J9?0i)n0XjTF=&0v`aHE2L(sS>?1^vlUNXD1MPMI zT!R4vLXg14bR7Vm`HVKr=!qLqn!A1q;xR*uLg?Vqko%Zl=`g@FN9dY5R5tp_;1a?- ze>{Qd5!X{xJiHsq60>=!1fjo&gc3MKiG?LQ119cKBS~yu2*GqOn(42x#LY^~;ns63 zG2)uIgD+7}(u|!aZ`XrfOLHD7X&^X;IUXyE`6y`L4x6`P!fZpm z-mM!fKc&fOI9*_)nhUooM0`%Is>sg&4oTin8E?ocBTRxVxuW(?NToWrG9!5+NIM;` zIAHVvFgiXB2SXL-UOK=&iwl8;7$0`z$}KDyISe+ki}Il!G7kcY;c+bx@V2OiQnOO2 zUcPE+&8q6<%C?S>g4q&~ypND(pUbpGO`JUuy3UobP6#m*3>Nbt?*KmntrQk%m=00v za5XH@3cCIQR@r1b`wIY3M@tPJe3m2g$E~-;lREG7BKP-TaJX$L!y*M33TWp!M@1`3$9`1%C*xJBYkC6a;gW*d>S>z%>9w=## z-rCp!i3MV8EbWG^FG6H%sf1mhJ_Laz7XM&OX3OB-&9HVYmcq4v0S0NKL1xV|__`66 z;*2JFNRo=EhEV120UB+}Bs_MArYtrq^f^M-dajsIO$@fvOM4hb6t%R306s2>R;ok_ z9KZsE+;zc|pZkZK&7H#VX=gf0>P&?hcolN;JbJkeJvR5Y089*zJJPNqPzsp$me_wC z@k`kz!j!e(`qA|Efl@>M*94Kh27zuw-=nfQ17ot3@O|v311o{HE#1Owbcbs6Quf`z zjk>5t)uEGzzRcJH!LvE|Zi(Tr0rPi+H2K*X*dFi>G1C#;{D3JeH;Z+!E7dU6fe1_o z-(k8@JJ7;>nFOx79+B@4?y%!p|F{G7-2CZKYYq=I0egfIE1;Rn~ z?DwK+BmC4{v5N!93gqK&Kx~;*{UV&os{{?Jbr7Q5=|wON(7jyYz(%lsi+!@DdjaQgHB;cF4%J0X0RvSUAVzoQ99uVN7PxqJAIO(^jjw>^RSANieRrsFv;zGDHF^$ zF6UfAT83S76ol~;D0>ynFyeStOKONR;Oe&4O|6^HM6o>1#u7;@+^Fz=c$n*~Xz2AfMwjVLi2?q71w+ z%{S;PH~5|cDZ$2Q_>_)i#W@lHEa1BWKOEYdl6UtwxON)O{A-6PMn z$d4D~$5Zmdue|hvoBRZeTyZZ1Z;g{IzI`W)>07q6N-b7UJ^U1D#|| zhkXM9v0W$CB2QH17FC5{%E^2&r?{yronwmSkK#QRyL$w!9@7PDmgK~m03W-`FKYsx zSR2%Z?IH?2u3uB|Ap*PmN!8jP}G12~|DdC71%A1{|l6aN~-UJdVOinh1RjmW*=pcRi7!e1o-`je;ke z@L33$RR?p`9b_MTfbTqyqY)zh6H}+hYH@N*A!$d`>ZaaoQMUyIJZ;RH=dL)-Q;3f%9fv>4+~ghBUbhjujyb8auzS0k`b>*@a0vhCqmR1D&&oXb z*>37{h+J2kR68V80_y9sL47CTVU;(ipG%}re+O|vy%V3+9{?->sOt8!4?Y+M)OY3r z^{cMBN?>CX-ZiEZ_{1lZa{>_@;GtkMpb^ zo(f94vXKj)Fgu%1z>~1jf`vczPXi{Z;ByoE;DcfKgy@hy0f(HIL)3$w!%ZHu$njT@ zXtfjfJHcW@g1GU8sowcq5_5Rl;Mb#Y#w4AwwssKKB;Ociox)f&FMZ1{){WW3iZ%Jd zx%yCLUR{04hpR{OifkM}mr+1qzsPs5u+K0#(0^orjg1My$S-yn`H~DqK9QCQ*o?$ z9iQo3&7Y34s(f0Ul z=^c0GC4L*k8R3-0{QL7AozX@iqOuuT>@Ph3?Q>sL$jJD; z`ILd1>SBxPeZ&=yUP7c*ulHMhE_L_8Tarqiq$G%4CJ!or1>6IE0LO6;c$u|`56TxI zS$LMZ zO8FA7-1$*LfAf)kO6_aA8o!7-=ry?MkB<_AUh5Q#m~~3PPB3`ZQGAw9AX{+oPx9HW zfzNeFb3J@mbSNI(0G}K2(KUnbev008Gvp?cQDHvqrv8jYO;?PKDQ>FIT2!AyDl|bi zqkJuX;O);NM;|%1 zd}+klaSK3Skv7>q-T(KS_6GU40IP^q2WZ# zS$G;=`lP$-H?6MUa&rZ5NnW-1w$^lo;;a|6Fiv+36(DsK{w-B*O%v}>y%N*?hGoPnEvM2)qbN^ ziHa*Z;c;6*@hD;aAUx7Rox}f}Nb#3J8Vhoh2DKzvq_J;c`;r^olRru_`jlUIlAVMT zhlm%2l1NzM)U!xf@?z15OL&Zs);w#9UlM5?{41;TW5i`Yeodqy=i^qNCq$og0Re|$ z!8l@}B%cFHqWioL_#~0m%RLS_$}QU8$X7V1o+sSINgPB^xqJN9>hUzO>EnEBCcG`t zV~Mqwyl?-EMfGeJDv3{+KcwZr#)3S04v9KGM>4CUQyjmO%QwSIeT(=YzjycegVp1C z;zH32@>%{!yjY+YNk-fErySSul6)O66Djx>@>yOPa!uG+=!da%%WoSQIj;(BWUz74 zkcK6LQs-O6u(4=JIFEIV{6bF3^5=pm3x)oODv0-vlGn1c?)X*t$XP@!d5L_`&V?~4 z=RN*X1Z%=Zxtr>*BqMhIHl$Z`uG(`ILQHT5e#u;fc(kFY0n~90+WfaLlWY);;&72~;|K#M$ z|62%Oj+>@k$0Ay-(|3gHGDmXg`ud<(Nl|4 zj-@ytzDHH~)3Rz$7DqxgTy+mfO5($F--7F_a*tEfZ?56DET?5Jdjh!xG7^y23>hAX z9i49N$lGZdHcoX@`9BzQnlHbHVoP)HM=`(-#n!=pg#OF%P|Vv|T;a?EWw;RKGHZ%r zI0%#c!ns8IB~-r4nG#niiNcrXQO%0!#LBxb;lGL>ux!8z2XG{8%o8M5c!Gq4$~Pn= zsdxs1)C0pg8zkKUCSLYFFD~kwel2)QPZ*T^{Rs&MB~-%> zN+ir3UQmLKRh}>=k(jTb0UM_mk%RPx#FYYxXN-`YlT?o-7?V&H(9U7Q+shi>z*0;G zN%Hn@HiNXLs0`8?PhgQy4cj0|YFHy>kR%d&OBf_?NVFpMwM7-Nul0mP36*cNC0Up6 zh}|2ciYa3E1{TYE)sB$&s`Uf|2~|;eFK;j?Cht|}2?kXH2KCkyBYzkYa1WUCVMsuN z!VHHYA#0YW9BYB83bAL7WZzv9CpBzu zFEJRIk3a$vW@kHg2uM^o^RYuf5_4rfb_k3slo%Sah{1bBR-(TWi&IR;4&E$|6{R#5 zRg}``Np&SuzTK0=y!nn&yn&^dq7=#Ri)8~#Q&EAX$rD&4RKCF?IpXyV776Q%94zaG z1dAv_Z(!>QlnLOhx27wGSC7_v0*-`g*nWC^A+mCBuO3OHC&AkWPg!{}y?V6KlL^}( zkhrO+khsYc5+zi_M&g7cheV0Q-V#V`&JBqzMTNu`Pe_zd4I7D)aCoGUD3RD(0*S4; zA#rn#NEELd;UArvh<~`P@UI(f_5@D})v)0?Dc|t)`AU5H&*b5^VZUl5fru~YJ9p#l vH6vUydpGCMp+g1vg?wyyQ!$6|XvVT7_kOk=9X{;$SMdJ_cox>R^N|1mbp@d% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..56ba51ebea95aed21eea55d16853626e52e8e12a GIT binary patch literal 1200 zcmV;h1W)@PiwFP!000000L@k1ZW~1uK2Flc*$~n+{Ylfb-P&ntr}4z=q)iA=DLAwh z6k5q{xu~kucs;QUL4&w{HFTug zVliCgpCh(U!0l2E!HdE|PMaaJwUTCq<38hh#r$$Z9FyOMIJ$q@QHz)HCu zn)^*|T9#?;>}}`w^1J4Xa?vd03)`r29}+*OC9Mft1~zB3YJO~r4&pTkN{Nzu;swsJ z>(?@`QpLbObZa4xqT75_Ol_E{Qlz~}+rq9=NmH-0M!H>h6;MC!tNd%yqF%_1H1#NN zXziZ2D77OI_y^1hsw^{LYsIz*ZKNgd>>249A*l=n0=#rZNIh5Rl4&t{%w#FzGAfo0 zv(IO?YfLJk>s4)i$n?qE+?6a+j-=X{M8tN2(3hmfq~=EA8)^2&VNHo~n)vL0RU(Y@ zfD27*Y*N)@Jhn~gNOJ>;Bo}d_HhaUIP_j%`Pt$Zz zIbx0!$Zi0vjW!LN7$+Mry#p}W3?*_Gkn@<2++Bd3e><5Pnv|8F&shhp(*Scvv_*Ai zzo1Q&r2ysylaZFrPX(IQ(o&tOsjjPzqcjJQMCk$ZsDir&u+W41)DIgaro!D+;rcb? z-UC=v;3rGabC5(G$5Y%2z!XDUWG`#{=Tz3!mqpYOk|Xy%{(7F&a-lGR?hiR_uy(+Y zNsDoT$)o&%j{QYcQSA|>m#~ZnLEHBNTD9wl5O9?PF5G$DHho1b>=KJ?6$tL)R{jI4 zU|A@?h)qPqFVPpCrT}IvORMGaoIwcPK0K@r)Z_^jbzSD$0MDPIitlttOpDZWLQnV3 z>xpo@Pbu!VYW=$LF`AJA2B+q}$pbZGIREN4zz=I!pJzz70M@mT4C;_!vj}kqAg`9A zT@lW)v}q;ak~m%L9&`NQcxD%3vNLDd)7~ z=@B8Q;~||zss`)^QZ*vj)chGM?9eJznc6zefsLF-^8o2GvT9^Sl*cWc^SFPuLp|kh z2H?Xn*HjN`@uYuq=t^ZfiLE>fspX1@bSHlS;NiHp!{BNn$Q2AL9Z}uaOG_HtHbe44FfE70j{0ox!kq6eiFpWM8D{U65Sjt z*IWOX>!}JSP9vCOC4YNZJJr=r4^P4B=<3{wY}9creouA%t`dz^iOjHewyV7!XAbxJ zO*Z~xU?avc*L6is0>i&Qn2E*Am;Cs-SnsaL?>3i0|6%L@TJi1iD}I02 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 0000000000000000000000000000000000000000..512c6723a4d41664dfd6b87626f5b7c7eb55c1f7 GIT binary patch literal 1258 zcmVw zrjhtkE$0O`obTXn&kdFO4_ft0RrNRYOQrsc_6MaO)0tb}fpw;FMT-sz?ab`V>@&~K z?D?1RAAimL_4>{4Km0kj{PS;r06+^s;=7gae`y07ri#5BdlFio&#KT zxh!(0B3u`tQIafTM&rhjCE5F;V^>9)J7|9jkjyj5OQOP29Y@@2%oo!DoeFD_?UG>- zpw;A5=rxQp?20a|vS&z9<;;_Ig%J(9*tLW&phE?hT~Fwgv0U2Ye%@Yy9z?Rr-mi1% zIo5{wmdr!QRI@qVLsPO{SFhM*ZtC*rfV(;t!AdA$stnS%VB02V1ojnHi01`YpyTF- zx1Du3L+vU+H*VGeyh3&QOpc(mnJ=LONfI{w?lKcXH{FcwfVOy;^8QNYUEuI~CbrEgkDh2t_aa&rl! za>qg7-`LK+PEM)|Utob)(mK|U+6;nSu_Sk@%tUnp8-@CEfvUKzieD*nONt%gXT@%6 zEf#VpeXiQ5zQu2-kRqdlF)LBfqb_ubndUY#_P=7LM<>r>XD?O`e7*LKCM&3 zPEMs~QaD8L4ACqJOSpTev?0<|%6Fo@c7P6vP3cNjIY503J+Kh!_D(F`z;zB_zS)-X zT<+*ww#A8;b$;jx2XEV=d%$8Bn@v;R)-CFlL+U2g*M4IS*Dm@N!0R*T3faYk!vJgl zUBVj5j(a;bC1Fy#jb-S8)h4tI&Lu6uP?AjGXw3`v zz+^{7Cih6Ceh=0K-;t({*4jJZ$Asg0tet3m|ENNamg6_^So2?VQcGKYUV6|;P|ZzJ zFoPufQ!!4DJd$AJ`T$uv0U9mcxI?prU!#%JZmKF=e+ei5KHkU4-g&9+fw~?w4F`w5 z0EZ@3*$*l^B$8@Ap*5+75ZaUKqXP+Yx{#pvu0wSVbPOoi&`BX(N%c-ZcV|L9fRGrj z2~f*+DH_pJA3*{{y?R5h%jBi0ml--fs@$VJ(U7ZQ$hDxdzLo$!nXZ$mKN@%=3>*mR zzDe3(%g5TWSL(UAMTAB3+^(-os|m!zov61KdJmB|5!pvV2ze-gd^Z|=FAN?&8Qc;E z4+p{b&kB9ylh8>>d=euGEoTKY+BA=?Q69(62jh602zwAGFb|so(;(;n0cIjj%sh${ z7(Gs49>)pHWSqdH;shogCooUq1ZFBuV5Xb?ezrxwpHI&RGjaN4&3+P0 z{g2-8<}%IUi+Vi|y&C;AP6W2&qUIXsc~M^!2@QVqzdXJ420z 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

}4j#@r~^}O%vuQ(5m8O{iX$? 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2e434b862bd5141cb39cbbba3c0ac9ebccdf2187 GIT binary patch literal 9998 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 Tf(vj5&`)R1pDzE=E{wTv(! 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..26bb76d8bf3252702fe9ee516f396d1012089312 GIT binary patch literal 3433 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 LNkvXXu0mjf8m`PI literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5defdebf1ebea29b46cea7b26ce07969e6333ccd GIT binary patch literal 5203 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